जावास्क्रिप्ट में अतुल्यकालिक संचालन और रिटर्न मान: पहेली को हल करना
जावास्क्रिप्ट में, अतुल्यकालिक संचालन, जैसे नेटवर्क अनुरोध या ईवेंट हैंडलिंग, अक्सर अपने परिणामों को समकालिक रूप से लौटाने का प्रयास करते समय चुनौतियाँ पेश करें। ऐसी ही एक स्थिति का उदाहरण निम्नलिखित jQuery फ़ंक्शन द्वारा दिया गया है:
function trackPage() {
var elqTracker = new jQuery.elq(459);
elqTracker.pageTrack({
success: function() {
elqTracker.getGUID(function(guid) {
alert(guid);
var returnValue = guid; // Attempt to assign the GUID to a variable
});
}
});
return returnValue; // Return the assigned variable
}
इस परिदृश्य में, लक्ष्य एसिंक्रोनस रूप से GUID मान प्राप्त करना और उसे कॉलर को लौटाना है। हालाँकि, वेरिएबल रिटर्नवैल्यू अपरिभाषित रहता है, जिससे सिंक्रोनस रिटर्न अप्रभावी हो जाता है। getGUID ऑपरेशन। एसिंक्रोनस ऑपरेशंस मुख्य थ्रेड को अवरुद्ध किए बिना शुरू करते हैं और अपना निष्पादन जारी रखते हैं। इसका तात्पर्य यह है कि जब तक ट्रैकपेज में रिटर्न स्टेटमेंट पहुंचता है, तब तक getGUID कॉल पूरी नहीं हुई है, और इसका परिणाम अनुपलब्ध है।
कॉलबैक फ़ंक्शंस और वादों का उपयोग करके समाधान
दो मुख्य दृष्टिकोण इस चुनौती का समाधान करते हैं:
कॉलबैक फ़ंक्शंस:
ट्रैकपेज के पैरामीटर के रूप में एक कॉलबैक फ़ंक्शन पेश करें, जिसे GUID उपलब्ध होने पर लागू किया जाता है। यह दृष्टिकोण लोकप्रिय है, लेकिन नियंत्रण प्रवाह के सावधानीपूर्वक प्रबंधन की आवश्यकता है और कॉलबैक नरक का कारण बन सकता है। ट्रैकपेज से एक "वादा" लौटाया जा सकता है, जिसे कॉल करने वाले परिणाम उपलब्ध होने के बाद कॉलबैक संलग्न कर सकते हैं। ऑब्जेक्ट समाधान, कोड को निम्नानुसार पुनः सक्रिय किया जा सकता है:अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3