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

जावास्क्रिप्ट में सेटटाइमआउट का उपयोग करते समय \"इस\" संदर्भ को कैसे संरक्षित करें?

2024-12-22 को प्रकाशित
ब्राउज़ करें:307

How to Preserve the \

सेटटाइमआउट और जावास्क्रिप्ट में मायावी "यह"

सेटटाइमआउट फ़ंक्शन का उपयोग करते समय, डेवलपर्स को अक्सर एक समस्या का सामना करना पड़ता है जहां तरीकों के बाद की कॉल खो जाती हैं उनका इच्छित संदर्भ, जिसके परिणामस्वरूप अपरिभाषित तरीके प्रतीत होते हैं। यह आम तौर पर "इस" संदर्भ के खो जाने के कारण होता है।

समस्या:

निम्नलिखित कोड पर विचार करें:

test.prototype.method = function() {
    //method2 returns image based on the id passed
    this.method2('useSomeElement').src = "http://www.some.url";
    timeDelay = window.setTimeout(this.method, 5000);
};

test.prototype.method2 = function(name) {
    for (var i = 0; i  1) {
            return document.images[i];
        }
    }
};

प्रारंभिक पृष्ठ लोड पर, मेथड2 फ़ंक्शन इच्छानुसार काम करता है। हालाँकि, टाइमआउट सेट करने के बाद, मेथड2 पर आने वाली कॉल के परिणामस्वरूप एक त्रुटि आती है जो दर्शाती है कि यह अपरिभाषित है।

समाधान:

मुख्य मुद्दा सेटटाइमआउट को संभालने के तरीके में है यह कीवर्ड. setTimeout(this.method, 5000) का उपयोग करके टाइमआउट सेट करते समय, संदर्भ खो जाता है, जिसके परिणामस्वरूप त्रुटि होती है।

इस समस्या का एक चतुर समाधान बाइंड() विधि का उपयोग करना है। विधि कॉल के अंत में ".bind(this)" जोड़कर, संदर्भ को स्पष्ट रूप से बाध्य किया जा सकता है, यह सुनिश्चित करते हुए कि समय समाप्त होने के बाद भी सही "यह" संदर्भ बनाए रखा जाता है।

बेहतर कोड :

test.prototype.method = function() {
    //method2 returns image based on the id passed
    this.method2('useSomeElement').src = "http://www.some.url";
    timeDelay = window.setTimeout(this.method.bind(this), 5000);
    //                                       ^^^^^^^^^^^ <- fix context
};

इस संशोधन के साथ, "इस" का संदर्भ उचित रूप से बाध्य है, जिससे विधि 2 को समय समाप्त होने के बाद इच्छित कार्य जारी रखने की अनुमति मिलती है। यह दृष्टिकोण सही निष्पादन संदर्भ को संरक्षित करने में सुरुचिपूर्ण और प्रभावी दोनों है।

विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: 1729735477 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] पर संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3