실행 순서를 머릿속에서 그릴 줄 아는지, 아니면 '비동기는 setTimeout이다' 수준에서 멈춰 있는지를 가른다. 마이크로태스크 우선순위를 짚으면 거기서부터 깊이를 더 따져 본다.
자바스크립트는 단일 스레드 위에서 콜 스택으로 코드를 실행하고, 이벤트 루프는 스택이 비워진 순간마다 큐에서 다음 작업을 꺼내 올린다. setTimeout(fn, 0)도 즉시 실행이 아니라 현재 스택이 비고 큐 차례가 돌아온 뒤 실행된다. 마이크로태스크 큐(Promise.then 등)는 매크로태스크 큐(setTimeout 등)보다 먼저 비워지므로, 두 큐가 섞인 코드의 출력 순서는 이 우선순위로 갈린다.
예상과 다른 콘솔 출력 순서를 디버깅하다 마이크로태스크 우선순위를 처음 깨달은 경험이 있다면 그 디버깅 과정을 그대로 답변 흐름으로 풀 수 있다
긴 동기 작업이 UI를 멈추게 한 적이 있다면 작업을 setTimeout이나 requestIdleCallback으로 쪼개 응답성을 회복시킨 사례와 연결할 수 있다
Promise.then 안에서 또 Promise를 만들거나 setTimeout과 섞었을 때 순서가 헷갈렸던 코드 리뷰 경험을 큐 우선순위 설명에 끼워 넣을 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.