Le operazioni blocking vengono eseguite in modo sincrono e tengono occupato l'unico thread JavaScript finché non terminano — nel frattempo nient'altro può girare. Le operazioni non-blocking avviano il lavoro, ritornano immediatamente e consegnano il risultato più tardi tramite una callback, una Promise o un evento, così il thread resta libero di fare altro.
Perché Node è single-threaded ma non-blocking
Il tuo JavaScript gira su thread guidato dall'. L'I/O (file, rete, DNS) è delegato a , che sotto il cofano usa le funzionalità async del sistema operativo e un piccolo . Mentre quel lavoro avviene fuori dal thread, l'event loop continua a processare altre callback. Quando l'I/O si completa, la sua callback viene messa in coda ed eseguita.
