Blocking (engelleyen) işlemler senkron çalışır ve bitene kadar tek JavaScript thread'ini tutar — bu sırada başka hiçbir şey çalışamaz. Non-blocking (engellemeyen) işlemler işi başlatır, hemen geri döner ve sonucu daha sonra bir callback, Promise veya event aracılığıyla teslim eder; böylece thread başka işler yapmak için serbest kalır.
Node neden tek thread'li ama yine de non-blocking
JavaScript'iniz tarafından yönetilen bir thread üzerinde çalışır. I/O (dosyalar, ağ, DNS) 'a devredilir; libuv da kaputun altında işletim sisteminin async olanaklarını ve küçük bir 'u kullanır. Bu iş thread dışında gerçekleşirken, event loop diğer callback'leri işlemeye devam eder. I/O tamamlandığında callback'i kuyruğa alınır ve çalıştırılır.
