Event loop — это механизм, который позволяет однопоточному Node.js выполнять неблокирующий I/O. Он непрерывно обрабатывает очередь callback'ов: пока ваш JavaScript выполняется на одном потоке, операции I/O выгружаются, и их callback'и запускаются loop'ом при завершении.
Фазы цикла
Каждая итерация ("tick") проходит через упорядоченные фазы, каждая со своей очередью 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 │
└───────────────────────────┘
