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