जावास्क्रिप्ट में एसिंक्रोनस कॉल से प्रतिक्रिया वापस करने के कई तरीके हैं। आइए पहले समस्या को समझते हैं। मान लें कि आपके पास foo नामक एक फ़ंक्शन है जो एसिंक्रोनस है और कुछ समय बाद डेटा देगा। यह 2 तरह से कर सकता है। यह या तो एक कॉलबैक स्वीकार कर सकता है जिसे डेटा के साथ निष्पादित करने के लिए तैयार होने पर वह कॉल करेगा। या यह एक वादा वापस कर सकता है।
उदाहरण के लिए, सेटटाइमआउट फ़ंक्शन कॉलबैक स्वीकार करता है और निश्चित समय के बाद इसे निष्पादित करता है। तो मान लें कि आप पहले दृष्टिकोण के साथ जाते हैं, फिर आप फ़ंक्शन को सेटटाइमआउट में पास कर सकते हैं।
उदाहरण
function myFunc(cb) { setTimeout(() => cb(100), 1000); } myFunc((a) => console.log(a))
आउटपुट
100
यह सेटटाइमआउट फ़ंक्शन को कॉलबैक के साथ कॉल करेगा जो 1000 एमएस के बाद निष्पादित होगा। जब उस फ़ंक्शन को निष्पादित किया जाता है, तो यह पास किए गए कॉलबैक (सीबी) को सेटटाइमआउट के कॉलबैक से लौटाए गए मान के साथ कॉल करेगा।
वादों का उपयोग करना
आप वादों का उपयोग करके भी ऐसा कर सकते हैं। अपने async फ़ंक्शन को एक वादे के साथ लपेटें और इस वादे को फ़ंक्शन के रिटर्न वैल्यू के साथ हल करें। आप तत्कालीन विधि को श्रृंखलाबद्ध कर सकते हैं और async फ़ंक्शन से लौटाए गए मान का उपयोग करने के लिए इसे कॉलबैक पास कर सकते हैं।
,
उदाहरण
new Promise(resolve => setTimeout(() => resolve(100), 1000)) .then(console.log)
आउटपुट
100