javascript - ajax encapsulated request needs to wait for accumulated result -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 3 उत्तर

मेरे वेब ऐप निम्न के रूप में एजेक्स अनुरोधों में संरचना:

  $ .ajax ({प्रकार: "GET", url: '...', डेटा प्रकार: "xml", सफलता: फ़ंक्शन (xml) {$ .ajax ({Type: "GET", url: "....", डेटाटाइप: "xml", सफलता: फ़ंक्शन (xml) {}, त्रुटि: फ़ंक्शन (xhr) {चेतावनी (xhr.responsetext);}}); $ .एजेक्स ({प्रकार: "GET", url: "....", डेटाटाइप: "xml ", सफलता: कार्य (xml) {}, त्रुटि: कार्य (xhr) {अलर्ट (xhr.responseText); }}); $। एजेक्स ({प्रकार: "GET", url: "...", डेटाटाइप: "xml", सफलता: फ़ंक्शन (xml) {}, त्रुटि: फ़ंक्शन (xhr) {अलर्ट (xhr.responseText);}} ); }});  

मुझे इससे पहले कि मैं कुछ और करने से पहले समाप्त करने के लिए बनाई गई सभी resquests की आवश्यकता है। क्योंकि मुझे उन्हें डिवीज़ में सामग्री लोड करने की आवश्यकता है और उसके बाद अपने कोड में html तत्व को जोड़ना और मुझे इसका इस्तेमाल नहीं करना है (दस्तावेज़) .जैक्सस्टॉप क्योंकि यह बाद में मेरे कोड को बर्बाद कर देगा।

मैं इसे कैसे प्राप्त कर सकता हूं?

आप अपने कोड को और अधिक साफ़ करने के लिए मतभेद ( $। डिफर्ड ) ऑब्जेक्ट का उपयोग कर सकते हैं,

प्रत्येक $ एजेक्स अनुरोध आपको एक अलग ऑब्जेक्ट देता है, और $। जब और .done () संयोजन की तरह निम्न के साथ

 < कोड> $। जब (req1, req2, req3) .done (फ़ंक्शन (resp1, resp2, resp3) {// यह सभी तीन अनुरोधों की सफलता पर निष्पादित किया जाएगा})  

आपके मामले में आप निम्नानुसार ऐसा कर सकते हैं

  var req1 = $ .ajax ({प्रकार: "GET", url: "..."}); Req1.done (function (resp1) {// यह पहले अनुरोध के बाद निष्पादित किया जाता है var req2 = $ .ajax ({प्रकार: "GET", url: "..."}), req3 = $ .ajax ( {प्रकार: "GET", url: "..."}), REQ4 = $। एजेक्स ({प्रकार: "GET", url: "..."}); $। जब (रिक 2, रिक 3, रिक 4) । () (// (जब 3 अन्य अनुरोध किए गए हैं); // यदि अनुरोधों की मनमाना संख्या है, तो कृपया निम्नलिखित var अनुरोधों पर विचार करेंअरेरे = [], numberOfRequests = 10; for (var I = 0; i & lt; numberOfRequests; i ++) {var अनुरोध = $। एजेक्स ({प्रकार: "GET", url: "..."}) अनुरोधोंएआरआरयूयूश (अनुरोध);} $ $। नल, अनुरोधअरेरे) .done (function () {// आप `आर्गुमेंट्स` var प्रतिक्रियाएं = आर्गुमेंट्स;})}} से उसी क्रम में प्रतिक्रिया एकत्र कर सकते हैं;  

डिफर्ड ऑब्जेक्ट्स कॉलबैक को संभालने का एक बहुत अच्छा तरीका प्रदान करती है, डिफर्ड ऑब्जेक्ट्स के बारे में अधिक जानने के लिए इसे जांचें


Comments

Popular posts from this blog

java - org.apache.http.ProtocolException: Target host is not specified -

java - Gradle dependencies: compile project by relative path -

ruby on rails - Object doesn't support #inspect when used with .include -