Acestea sunt moduri progresiv mai plăcute de a exprima muncă neblocantă pe un singur thread, toate conduse dedesubt de un event loop care rulează callback-urile gata unul câte unul. Ele gestionează când codul se reia, nu mai multe thread-uri.
Event loop-ul
O buclă single-threaded menține o coadă de callback-uri gata. Când o operație async (timer, I/O) se finalizează, callback-ul său este pus în coadă; bucla îl ia pe următorul și îl rulează până la capăt, apoi repetă. Nimic nu întrerupe un callback în execuție, așa că munca CPU lungă blochează totul.
[event loop] → rulează callback → I/O se termină → pune callback în coadă → rulează următorul → ...
