더북(TheBook)

다음과 같이 setTimeout()을 여러 번 호출해도 모두 비동기 함수이기에 콘솔에는 내가 먼저, 1, 2, 3 순서로 찍힙니다.

setTimeout(() => {
  console.log(3);
}, 5000);
setTimeout(() => {
  console.log(2);
}, 3000);
setTimeout(() => {
  console.log(1);
}, 2000);
console.log('내가 먼저');
// 내가 먼저, 1, 2, 3

그렇다면 setTimeout()에 넣은 함수는 언제 실행될까요? 정답은 동기 코드가 모두 실행되고 난 뒤입니다. 이유에 대해서는 3.3 호출 스택과 이벤트 루프에서 자세히 알아보겠습니다. 그 전에는 동기 코드와 비동기 코드를 구분할 수 있어야 하니 비동기 코드가 나올 때마다 비동기임을 언급하겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.