Sunday 15 July 2012

javascript - jQuery.when() need to be cleared up -


मेरे पास एक सरल। HTML पृष्ठ है, जैसे:

  & lt; / html & gt; & Lt; शीर्ष & gt; & Lt; स्क्रिप्ट प्रकार = "टेक्स्ट / जावास्क्रिप्ट" src = "jquery / jquery-1.8.2.js" & gt; & lt; / स्क्रिप्ट & gt; ... & lt; स्क्रिप्ट प्रकार = "टेक्स्ट / जावास्क्रिप्ट" & gt; Var obj; फ़ंक्शन document_load () {obj = new mySpace.myClass (); Console.log ("अंत दस्तावेज़ लोड"); } & Lt; / script & gt; & Lt; / head & gt; & Lt; body onload = "document_load ()" & gt; ... ... & lt; / body & gt; & Lt; / html & gt;  

myClass इस कन्स्ट्रक्टर के साथ एक TypeScript वर्ग है:

  सार्वजनिक कन्स्ट्रक्टर () {console.log ("कन्स्ट्रक्टर शुरू"); (& Lt; any & gt; $)। जब (jQuery.getJSON ('पथ / myJson1.json', फ़ंक्शन (डेटा) {this.obj1 = डेटा; console.log ("here1");}), jQuery.getJSON (' Path / myJson2.json ', फ़ंक्शन (डेटा) {this.obj2 = डेटा; console.log ("here2");}))। तब (फ़ंक्शन () {if (this.obj1 & amp; this.obj2) {Console.log ("here3"); this.obj3 = नया myClass3 (); this.obj4 = नया myClass4 (); console.log ("सबकुछ ठीक हो गया");}}); }  

वास्तव में कंसोल यह प्रिंट करता है:

  कंस्ट्रक्टर अंत दस्तावेज़ लोड करें here1 here2  

इसका कारण व्यवहार (निश्चित रूप से) अतुल्यकालिक jQuery कॉल के कारण होता है (या कम से कम मुझे लगता है)। मैं निम्नलिखित व्यवहार कैसे प्राप्त कर सकता हूं?

  यहाँ निर्माता शुरू 1 यहाँ 2 here3 सब कुछ ठीक हो गया ठीक है अंत दस्तावेज़ लोड  

मैं स्पष्ट करता हूं कि जेसन ठीक से लिया जाता है (I उन्हें मुद्रित करने की कोशिश की और वे सही हैं)।

यही कारण है कि आप jQuery के लिए एक वादा नहीं लौट रहे हैं जब, तो कॉलबैक को फोन किया जाता है और this.obj1 & amp; amp; यह। BOJ2 दोनों अशक्त हैं।

ऐसा करने का एक बेहतर तरीका होगा:

  (& lt; कोई भी & gt; $)। जब (jQuery.getJSON ('Path / myJson1.json'), jQuery.getJSON ('path / myJson2.json'))। तब (फ़ंक्शन (obj1, obj2) {// code});  

No comments:

Post a Comment