이것들은 단일 스레드에서 논블로킹 작업을 표현하는 점점 더 나은 방식들로, 그 밑에서는 모두 준비된 콜백을 하나씩 실행하는 이벤트 루프에 의해 구동됩니다. 이들은 여러 스레드가 아니라 코드가 언제 재개되는지를 관리합니다.
이벤트 루프
단일 스레드 루프가 준비된 콜백의 큐를 유지합니다. 비동기 연산(타이머, I/O)이 완료되면 그 콜백이 큐에 들어가고, 루프는 다음 것을 골라 완료될 때까지 실행한 뒤 반복합니다. 실행 중인 콜백을 아무것도 선점하지 않으므로, 긴 CPU 작업은 모든 것을 블로킹합니다.
text
[event loop] → run callback → I/O finishes → enqueue callback → run next → ...
세 가지 스타일
js
