다음과 같이 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 호출 스택과 이벤트 루프에서 자세히 알아보겠습니다. 그 전에는 동기 코드와 비동기 코드를 구분할 수 있어야 하니 비동기 코드가 나올 때마다 비동기임을 언급하겠습니다.

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