मैं HTML में JQuery का उपयोग करके संचालन के निम्न अनुक्रम को पूरा करने का प्रयास कर रहा हूं।समानांतर में कई AJAX अनुरोध करें, और उनमें से सभी के बाद एक फ़ंक्शन चलाएं
- यूआरएल की एक सूची
- इन url समानांतर
- प्रतीक्षा में $ .getJSON (यूआरएल) का उपयोग कर सभी अनुरोधों को पूरा करने या विफल करने के लिए अनुरोध किया गया है में से प्रत्येक का निर्माण किया है (404 हो सकता है)
- सभी पूर्ण JSON- अनुरोधों का डेटा लें और कुछ करें।
मैंने नीचे पोस्ट किए गए जावा-स्क्रिप्ट कोड का निर्माण किया। यह 404-त्रुटि के कारण अनुरोधों में से एक विफल होने के बावजूद यह काम करता है: फिर, $.when
नहीं चलता है क्योंकि अनुरोध विफल होने पर तुरंत बंद हो जाता है। क्या आप किसी भी तरह से AJAX अनुरोधों को ओवरराइड कर सकते हैं, इसलिए वे असफल नहीं होते हैं बल्कि बदले में एक खाली स्रोत लौटाते हैं?
मैंने पहले से ही this और this पोस्ट पढ़ा है, लेकिन यह कोई समाधान नहीं प्रदान करता है जहां सभी प्रश्नों को पूरा करने के बाद कोड चलाया जा सकता है।
function fetchData() {
queries = [];
//urls is initialized somewhere else containing all urls
for(var url in urls) {
queries.push($.getJSON(url));
}
$.when.apply(this, queries).done(function() {
console.log("Finished all queries, got "+arguments.length+" results");
//Now arguments is a array containing the results of all requests
}
//function returns instantly, no problem!
}
मुझे jquery में अनुभव नहीं हुआ है, लेकिन ऐसा लगता है कि आपको क्वेरी काउंटर की आवश्यकता है। अर्थात। आपके द्वारा भेजे जाने वाले प्रश्नों की संख्या के लिए एक काउंटर सेट करें। सफलता में, या संबंधित त्रुटि, फ़ंक्शन, काउंटर को कम करता है (जावास्क्रिप्ट में असामान्य कमी परमाणु है?)। एक बार काउंटर शून्य तक पहुंचने के बाद, आप जानते हैं कि सभी अनुरोध किए गए हैं और आप परिणामों को संसाधित कर सकते हैं।बेशक, सभी प्रश्नों को पूरा करने के बाद आपको बाद में प्रसंस्करण के लिए प्रश्नों के परिणामों को कैश करना होगा। – ewh
डुप्लिकेट: http://stackoverflow.com/questions/1060539/parallel-asynchronous-ajax-requests-using-jquery – joeytwiddle