event loop는 단일 스레드 기반의 Node.js가 논블로킹 I/O를 수행할 수 있게 해주는 메커니즘입니다. 이는 콜백 큐를 지속적으로 처리합니다. 여러분의 JavaScript가 하나의 스레드에서 실행되는 동안 I/O 작업은 외부로 위임되며, 작업이 완료되면 해당 콜백이 event loop에 의해 실행됩니다.
loop의 단계(phase)
각 반복("tick")은 순서가 정해진 단계들을 거치며, 각 단계는 자체 콜백 큐를 가집니다.
text
┌───────────────────────────┐
┌─>│ timers (setTimeout) │ ← expired timer callbacks
│ ├───────────────────────────┤
│ │ pending I/O callbacks │
│ ├───────────────────────────┤
│ │ poll (I/O events) │ ← retrieve new I/O; execute their callbacks
│ ├───────────────────────────┤
│ │ check (setImmediate) │
│ ├───────────────────────────┤
└──│ close callbacks │
└───────────────────────────┘
