Το event loop είναι ο μηχανισμός που επιτρέπει στο μονο-νηματικό Node.js να εκτελεί non-blocking I/O. Επεξεργάζεται συνεχώς μια ουρά callbacks: ενώ το JavaScript σας εκτελείται σε ένα νήμα, οι λειτουργίες I/O ξεφορτώνονται και τα callbacks τους εκτελούνται από τον βρόχο όταν ολοκληρωθούν.
Οι φάσεις του βρόχου
Κάθε επανάληψη ("tick") διέρχεται από διατεταγμένες φάσεις, καθεμία με τη δική της ουρά callbacks:
┌───────────────────────────┐
┌─>│ timers (setTimeout) │ ← expired timer callbacks
│ ├───────────────────────────┤
│ │ pending I/O callbacks │
│ ├───────────────────────────┤
│ │ poll (I/O events) │ ← retrieve new I/O; execute their callbacks
│ ├───────────────────────────┤
│ │ check (setImmediate) │
│ ├───────────────────────────┤
└──│ close callbacks │
└───────────────────────────┘
