अनुरोध के अनुसार, यहां उत्तर के रूप में प्रस्तुत टिप्पणियां हैं:
मुझे यकीन नहीं है कि आप इस तथ्य को पूरी तरह से टटोलेंगे कि जेएस में कार्य प्रथम श्रेणी की वस्तुएं हैं, और इसलिए जब तक वे बनाए जाते हैं, तब तक संग्रहीत किया जा सकता है।
उदाहरण के लिए, मान लें कि आप किसी फ़ाइल पर लिखना चाहते हैं, फिर एक लॉग संदेश प्रिंट करें; इसलिए आप "लिखना ()" फ़ंक्शन (या जो भी) कहते हैं और इसे एक फ़ंक्शन पास करते हैं जो लॉग संदेश को आउटपुट करता है (यह आस्थगित कॉलबैक फ़ंक्शन है)। "लिखना ()" आंतरिक रूप से दिए गए फ़ंक्शन का एक संदर्भ संग्रहीत करता है, फ़ाइल पर लिखना शुरू करता है, और यह लिखने के लिए अपने स्वयं के कॉलबैक को सेट करता है जब लिखना समाप्त हो जाता है। यह तब किया जाता है जब लेखन किया जाता है; जब यह होता है, तो आंतरिक कॉलबैक किसी भी तरह से कहा जाता है (यह अंतर्निहित रूपरेखा का काम है - नोड के मामले में। यह एक घटना लूप के साथ किया जाता है), जो तब आपके कॉलबैक को कॉल करता है जो लॉग संदेश को प्रिंट करता है।
"स्थगित" भाग का सीधा सा अर्थ है कि आपके कॉलबैक फ़ंक्शन को तुरंत नहीं बुलाया गया है; उचित समय आने तक इसे स्थगित किया जाता है । नोड में कई एसिंक्रोनस कार्यों की तरह नोड.जेएस में, दिए गए कॉलबैक को आम तौर पर ऑपरेशन पूरा होने (या कोई त्रुटि होने पर) कहा जाता है।
अधिकांश सामान नोड.जेएस में async है, लेकिन उदाहरण के लिए jQuery के साथ ब्राउज़र में, अधिकांश सामान वास्तव में सिंक्रोनस है (छोड़कर, जाहिर है, AJAX अनुरोधों के लिए)। चूंकि जावास्क्रिप्ट में फर्स्ट-क्लास फ़ंक्शंस इतने आसान हैं (विशेष रूप से महान बंद समर्थन के कारण), कॉलबैक का उपयोग ब्राउज़र में भी हर जगह किया जाता है, लेकिन वे तुल्यकालिक संचालन के लिए "आस्थगित" नहीं होते (सिवाय इसके कि उन्हें तुरंत नहीं बुलाया जाता है) आप, लेकिन बाद में जिस फ़ंक्शन को आप कॉल करते हैं)।
यह तथ्य कि अंतर्निहित प्रणाली ईवेंट-चालित है, आस्थगित कॉलबैक के उपयोग के लिए ऑर्थोगोनल है; आप नोड के एक बहुत (बहुत धीमे) संस्करण की कल्पना कर सकते हैं। जो कि हर ऑपरेशन के लिए एक धागा शुरू करता है, और फिर आपके दिए गए कॉलबैक को कॉल करता है जब थ्रेड ने अपना काम पूरा किया, बिना घटनाओं का उपयोग किए। बेशक, यह एक भयानक मॉडल है, लेकिन यह मेरी बात को दिखाता है :-)
Deferred
वस्तुएं? क्या यह Node.js के लिए कुछ विशिष्ट है?