| Fază | Ce execută |
| timers | Callback-urile programate cu setTimeout() și setInterval() |
| pending callbacks | Callback-uri de sistem amânate din ciclul anterior |
| idle, prepare | Utilizare internă Node.js |
| poll | Preia evenimente noi de I/O, execută callback-uri legate de rețea/fișiere |
| check | Callback-urile programate cu setImmediate() |
| close callbacks | Evenimente de tip close (ex: socket.on('close', ...)) |
Pe lângă cele șase faze, există și coada de micro-task-uri (process.nextTick() și Promise-uri rezolvate), care se execută între fiecare fază, înaintea trecerii la faza următoare.
console.log('1 - start');
setTimeout(() => console.log('2 - setTimeout'), 0);
Promise.resolve().then(() => console.log('3 - promise'));
process.nextTick(() => console.log('4 - nextTick'));
console.log('5 - end');
// Ordinea afișată:
// 1 - start
// 5 - end
// 4 - nextTick (microtask, prioritate maximă)
// 3 - promise (microtask)
// 2 - setTimeout (macrotask, faza timers)
Atenție: Codul sincron „greu" (calcule intensive, bucle mari) blochează event loop-ul și toate cererile care așteaptă să fie procesate. Pentru operații CPU-intensive folosiți worker_threads sau procese separate, nu blocați firul principal.