"이벤트 루프"라는 단어를 들어본 사람인지, _마이크로태스크와 매크로태스크 우선순위_까지 잡고 UI 프리징/콜백 순서를 설명하는 사람인지를 가른다.
자바스크립트 실행 자체는 단일 콜 스택에서 일어나지만, 타이머·I/O 같은 작업은 런타임(브라우저 Web API, Node의 libuv)이 비동기로 처리하고 완료 콜백을 _큐_에 넣는다. 이벤트 루프는 스택이 비면 큐에서 작업을 꺼내 실행하며, Promise/queueMicrotask 같은 _마이크로태스크_가 setTimeout 같은 _매크로태스크_보다 먼저 비워진다. 그래서 "싱글 스레드인데 동시성처럼 보이는" 동작이 가능하다. CPU 집약 작업은 여전히 메인 스레드를 막으므로 Web Worker/Worker Threads로 분리해야 한다.
Promise 체인의 micro task와 setTimeout 매크로 task 순서를 직접 그려본 적이 있다면 우선순위 이야기를 그대로 답변 후크로 쓸 수 있다
긴 동기 작업을 Web Worker로 분리해 UI 프리징을 잡은 경험이 있다면 메인 스레드 부담 설명으로 연결할 수 있다
AbortController로 늦게 온 응답을 무시해 race condition을 해결한 경험이 있다면 깊이 있는 답이 된다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.