L'event loop è il meccanismo che consente a Node.js single-threaded di eseguire non-blocking I/O. Elabora continuamente una coda di callback: mentre il tuo JavaScript viene eseguito su un thread, le operazioni I/O vengono scaricate, e i loro callback vengono eseguiti dal loop quando completano.
Le fasi del loop
Ogni iterazione ("tick") si muove attraverso fasi ordinate, ognuna con la propria coda di callback:
┌───────────────────────────┐
┌─>│ timers (setTimeout) │ ← expired timer callbacks
│ ├───────────────────────────┤
│ │ pending I/O callbacks │
│ ├───────────────────────────┤
│ │ poll (I/O events) │ ← retrieve new I/O; execute their callbacks
│ ├───────────────────────────┤
│ │ check (setImmediate) │
│ ├───────────────────────────┤
└──│ close callbacks │
└───────────────────────────┘
