동기(Synchronous)와 비동기(Asynchronous)의 핵심 차이는 작업 처리 방식과 대기 시간에 있습니다.

동기 처리

  • 순차적 실행: 한 작업이 완료될 때까지 다음 작업이 기다림
  • 블로킹: 현재 작업이 끝나기 전까지 프로그램이 멈춤
  • 예측 가능한 실행 순서: 코드가 작성된 순서대로 실행

javascript

console.log("1번 작업");
console.log("2번 작업"); // 1번이 끝난 후 실행
console.log("3번 작업"); // 2번이 끝난 후 실행

비동기 처리

  • 병렬적 실행: 여러 작업이 동시에 진행될 수 있음
  • 논블로킹: 작업이 완료되지 않아도 다음 코드가 실행됨
  • 콜백/Promise/async-await: 작업 완료 시점을 따로 처리

javascript

console.log("1번 작업");
setTimeout(() => console.log("2번 작업"), 1000); // 1초 후 실행
console.log("3번 작업"); // 2번을 기다리지 않고 바로 실행
// 출력: 1번 → 3번 → 2번

실생활 비유

  • 동기: 은행 창구에서 한 명씩 순서대로 업무 처리
  • 비동기: 레스토랑에서 주문받고 요리하는 동안 다른 손님도 계속 주문받기

언제 사용하나?

  • 동기: 순서가 중요한 작업, 간단한 계산
  • 비동기: 네트워크 요청, 파일 읽기, 사용자 인터페이스 반응성이 중요한 경우

비동기 처리는 특히 웹 개발에서 사용자 경험을 향상시키는 핵심 기술입니다.