"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैं जावास्क्रिप्ट में एसिंक्रोनस ऑपरेशन परिणाम को सिंक्रोनाइज़ कैसे लौटा सकता हूँ?

मैं जावास्क्रिप्ट में एसिंक्रोनस ऑपरेशन परिणाम को सिंक्रोनाइज़ कैसे लौटा सकता हूँ?

2024-11-07 को प्रकाशित
ब्राउज़ करें:816

How can I return asynchronous operation results synchronously in JavaScript?

जावास्क्रिप्ट में अतुल्यकालिक संचालन और रिटर्न मान: पहेली को हल करना

जावास्क्रिप्ट में, अतुल्यकालिक संचालन, जैसे नेटवर्क अनुरोध या ईवेंट हैंडलिंग, अक्सर अपने परिणामों को समकालिक रूप से लौटाने का प्रयास करते समय चुनौतियाँ पेश करें। ऐसी ही एक स्थिति का उदाहरण निम्नलिखित 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 उपलब्ध होने पर लागू किया जाता है। यह दृष्टिकोण लोकप्रिय है, लेकिन नियंत्रण प्रवाह के सावधानीपूर्वक प्रबंधन की आवश्यकता है और कॉलबैक नरक का कारण बन सकता है। ट्रैकपेज से एक "वादा" लौटाया जा सकता है, जिसे कॉल करने वाले परिणाम उपलब्ध होने के बाद कॉलबैक संलग्न कर सकते हैं। ऑब्जेक्ट समाधान, कोड को निम्नानुसार पुनः सक्रिय किया जा सकता है:

    फ़ंक्शन ट्रैकपेज() { var elqTracker = नया jQuery.elq(459); var dfd = $.स्थगित(); elqTracker.pageTrack({ सफलता: फ़ंक्शन() { elqTracker.getGUID(फ़ंक्शन(guid) { dfd.resolve(guid); // GUID के साथ विलंबित ऑब्जेक्ट का समाधान करें }); } }); वापसी dfd.promise(); // एक वादा लौटाएं जो परिणाम का प्रतिनिधित्व करता है } // उदाहरण उपयोग: ट्रैकपेज().किया गया(फ़ंक्शन(गाइड) { // गाइड अब किए गए कॉलबैक के पैरामीटर के रूप में उपलब्ध है चेतावनी ("गाइड मिल गया:" गाइड); });
  1. यह रिफैक्टर्ड कोड एसिंक्रोनस ऑपरेशन का प्रतिनिधित्व करने के लिए एक विलंबित ऑब्जेक्ट का उपयोग करता है और परिणाम उपलब्ध होने पर कॉलबैक संलग्न करने में लचीलेपन की अनुमति देता है।
विज्ञप्ति वक्तव्य यह आलेख यहां पुनर्मुद्रित है: 1729554080 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3