Blocking ऑपरेशन synchronous रूप से चलते हैं और एकमात्र JavaScript थ्रेड को तब तक रोके रखते हैं जब तक वे पूरे न हो जाएं — इस बीच और कुछ नहीं चल सकता। Non-blocking ऑपरेशन काम शुरू करते हैं, तुरंत लौट आते हैं, और परिणाम बाद में callback, Promise, या event के ज़रिए पहुँचाते हैं, जिससे थ्रेड अन्य काम करने के लिए मुक्त रहता है।
Node single-threaded होने के बावजूद non-blocking क्यों है
आपका JavaScript थ्रेड पर चलता है जिसे चलाता है। I/O (फ़ाइलें, नेटवर्क, DNS) को सौंपा जाता है, जो पर्दे के पीछे OS की async सुविधाओं और एक छोटे का उपयोग करता है। जब वह काम थ्रेड से बाहर होता है, तब event loop अन्य callbacks को प्रोसेस करता रहता है। जब I/O पूरा होता है, तो उसका callback कतार में डाला जाता है और चलाया जाता है।
