정답 출력 순서를 외웠는지가 아니라, 큐 종류와 등록 시점을 근거로 들고 결과를 논리적으로 풀어내는지 가르려는 질문이다.
먼저 동기 코드가 끝까지 흐르며 console.log('9')가 찍히고, 그 사이에 만난 Promise.then 콜백은 마이크로태스크 큐로 들어간다. 현재 콜 스택이 비면 마이크로태스크 큐를 다 비울 때까지 실행해 5, 8, 7이 차례로 나온다. 그다음 매크로태스크 큐의 첫 setTimeout 콜백이 돌면서 1, 4를 출력하고, 그 안에서 등록된 Promise 마이크로태스크가 곧바로 따라붙어 3이 나온다. 이후 앞서 큐에 있던 다른 setTimeout이 실행되어 6, 마지막으로 그 안에서 다시 등록된 setTimeout이 실행되어 2가 나온다.
비동기 코드가 의도와 다른 순서로 찍혀 버그가 났던 경험이 있다면 마이크로·매크로 큐로 사후 추적한 과정과 연결할 수 있다
테스트에서 fake timer와 microtask flush를 같이 사용해 본 적이 있다면 큐 우선순위 이해를 검증 도구로 엮을 수 있다
비동기 흐름이 복잡해진 코드를 단순화한 리팩터링 경험이 있다면 실행 순서 예측이 쉬워지는 방향으로 설명할 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.