비동기 작업은 시작과 완료 사이에 다른 코드를 실행한다

호출 순서와 완료 순서를 분리해 call stack·task queue·microtask의 역할을 읽는다.

stack

동기 코드 실행

현재 call stack의 코드를 끝까지 처리

start

비동기 작업 위임

timer·network를 호스트 환경에 맡김

settle

완료 작업 예약

Promise 후속은 microtask queue에 들어감

drain

microtask 실행

stack이 빈 뒤 다음 task보다 먼저 모두 처리

next

다음 task

timer·event callback이 새 stack에서 실행

핵심비동기는 동시에 코드를 실행한다는 뜻이 아니라 완료 이후 코드를 나중 순서에 예약한다는 뜻이다.