Operațiile blocante (blocking) rulează sincron și rețin singurul fir JavaScript până se termină — între timp nimic altceva nu poate rula. Operațiile neblocante (non-blocking) pornesc lucrul, revin imediat și livrează rezultatul mai târziu printr-un callback, un Promise sau un eveniment, așa că firul rămâne liber să facă altceva.
De ce Node este single-thread și totuși neblocant
JavaScript-ul tău rulează pe fir condus de . I/O (fișiere, rețea, DNS) este delegat către , care folosește facilitățile asincrone ale sistemului de operare și un mic (thread pool) în spate. În timp ce acea muncă se petrece în afara firului, event loop-ul continuă să proceseze alte callback-uri. Când I/O se termină, callback-ul său este pus în coadă și rulat.
