Blocking operations synchronous چلتے ہیں اور مکمل ہونے تک واحد JavaScript thread کو تھامے رکھتے ہیں — اس دوران کوئی اور چیز نہیں چل سکتی۔ Non-blocking operations کام شروع کرتے ہیں، فوراً واپس آ جاتے ہیں، اور نتیجہ بعد میں کسی callback، Promise، یا event کے ذریعے پہنچاتے ہیں، تاکہ thread دوسرے کام کرنے کے لیے آزاد رہے۔
Node single-threaded ہونے کے باوجود non-blocking کیوں ہے
آپ کی JavaScript ایک thread پر چلتی ہے جسے چلاتا ہے۔ I/O (files، network، DNS) کو کے سپرد کیا جاتا ہے، جو اندرونی طور پر OS کی async سہولیات اور ایک چھوٹا استعمال کرتا ہے۔ جب وہ کام thread سے باہر ہوتا ہے، event loop دیگر callbacks پر عمل کرتا رہتا ہے۔ جب I/O مکمل ہوتا ہے، اس کا callback قطار میں لگا کر چلایا جاتا ہے۔
