출처: 이웅모 《모던 자바스크립트 Deep Dive》 42장 · 본인 말로 정리

한줄 요약

JS 엔진은 싱글 스레드 + 콜 스택으로 한 번에 하나만 실행한다. 오래 걸리는 일을 동기적으로 붙잡으면 UI가 멈추므로, 브라우저는 비동기 콜백을 태스크 큐에 넣고 이벤트 루프가 비울 때 실행한다.

동기 vs 비동기

console.log('1');
setTimeout(() => console.log('2'), 0);
console.log('3');
// 출력: 1 → 3 → 2

0ms여도 콜백은 당장 콜 스택에 못 올라가고 큐를 탄다.

이벤트 루프 (감각)

  1. 콜 스택이 비었는지 본다
  2. 태스크 큐에 대기 중이면 하나 꺼내 스택에 올려 실행
  3. 반복

타이머·DOM 이벤트·XHR 로드 등이 이 경로와 연결된다. (프로미스 microtask는 45장)

체크포인트