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