मैं बहुत उलझन में हूं कि कभी-कभी जब मैं एक वर्ग के उदाहरण के संयोजन का उपयोग करता हूं तो मुझे दो प्रकार की त्रुटियां मिलती हैं। यदि मैं दो या तीन जंजीर वादे के साथ Promise.all() का उपयोग करता हूं तो मुझे कभी-कभी कॉलबैक के भीतर एक अपरिभाषित चर की त्रुटि मिलती है। जब मेरे पास कई गुणों और विधियों के साथ एक जटिल वर्ग है, तो मेरे पास के साथ मेरी कक्षा का एक अनिर्धारित उदाहरण है .then() यदि मेरी कक्षा सरल है और मैं केवल एक या दो शापित वादे का उपयोग करता हूं तो मुझे कोई त्रुटि नहीं है। क्या किसी को कोई विचार है कि यह क्यों हो सकता है? यहाँ कोड संरचना मैं के लिए लक्ष्य कर रहा हूँ का एक उदाहरण है:ES6 वादा और कक्षा संघर्ष
(कोड को ठीक से नवीनतम फ़ायरफ़ॉक्स रात में कार्यान्वित करता है, लेकिन क्रोम 47 में नहीं)
'use strict';
class Controller {
\t constructor() {
\t \t this.data = 'data';
\t \t this.moredata = 'data';
\t \t this.evenmore = ['a', 'b', 'c'];
\t \t this.dataobj = {"a" : "1", "b" : "2", "c" : "3"};
\t }
}
//BLOCKED CODE
{
\t let cc = new Controller();
\t let loadeddata = null;
\t
\t let xhr = $.getJSON('chapters.json', {}, (response) => {
\t \t loadeddata = response; //SOMETIMES IF CLASS IS COMPLEX IS NOT DEFINED (SOMETIMES IT IS)
\t }).fail(() => {
\t \t console.log('Failed to load JSON data!');
\t });
\t
\t let xhr2 = $.getJSON('chapters.json', {}, (response) => {
\t \t loadeddata = response;
\t }).fail(() => {
\t \t console.log('Failed to load JSON data!');
\t });
\t
\t let xhr3 = $.getJSON('chapters.json', {}, (response) => {
\t \t loadeddata = response;
\t }).fail(() => {
\t \t console.log('Failed to load JSON data!');
\t });
\t
\t let xhr4 = $.getJSON('chapters.json', {}, (response) => {
\t \t loadeddata = response;
\t }).fail(() => {
\t \t console.log('Failed to load JSON data!');
\t });
\t
\t
\t //SOMETIMES WITH COMPLICATED CLASS WITH ONE OR TWO PROMISES DOES NOT THROW ERROR
\t Promise.all([xhr, xhr2, xhr3, xhr4]).then(() => {
\t \t console.log(loadeddata);
\t \t console.log(cc); //SOMETIMES CC IS NOT DEFINED (SOMETIMES IT IS)
\t });
}
क्यों आप मिश्रण कर रहे हैं jQuery defers के साथ देशी वादे? – Amit
क्या आप कुछ कोड पोस्ट कर सकते हैं जो 'कोड संरचना का उदाहरण है' के बजाय त्रुटि का प्रदर्शन करता है - यह देखना मुश्किल है कि आप अपने कोड में क्या गलत कर रहे हैं यदि आप कुछ गलत कर रहे कोड को पोस्ट नहीं करते हैं –
मैंने कोड अपडेट किया है जो एक त्रुटि दिखाता है। अजीब चीज यह है कि मैंने धीरे-धीरे कक्षा में गुण जोड़े और फिर एक और वादा जोड़ा, और मैं पहले की तरह ही एक ही त्रुटि के साथ समाप्त हुआ, लेकिन अगर मैं सिर्फ एक चीज जैसे वादे को हटा देता हूं, तो मुझे अभी भी एक त्रुटि मिलती है जबकि मैंने किया नहीं। –