2012-03-27 16 views
17

मुझे एकाधिक $ .get अनुरोध जारी करने, उनके प्रतिक्रियाओं को संसाधित करने और उसी सरणी में प्रसंस्करण के परिणामों को रिकॉर्ड करने की आवश्यकता है। कोड इस तरह दिखता है:jQuery: एकाधिक जीईटी अनुरोधों को सफलतापूर्वक संसाधित किया जाता है

$.get("http://mysite1", function(response){ 
    results[x1] = y1; 
} 
$.get("http://mysite2", function(response){ 
    results[x2] = y2; 
} 

// rest of the code, e.g., print results 

वहाँ वैसे भी सुनिश्चित करना है कि सभी सफलता कार्यों को पूरा कर लिया है, इससे पहले कि मैं अपने कोड के बाकी के लिए आगे बढ़ें?

उत्तर

34

एक बहुत ही सुरुचिपूर्ण समाधान है: jQuery डिफरर्ड ऑब्जेक्ट।

var d1 = $.get(...); 
var d2 = $.get(...); 

$.when(d1, d2).done(function() { 
    // ...do stuff... 
}); 

http://api.jquery.com/category/deferred-object/ पर और अधिक पढ़ें और http://api.jquery.com/jQuery.when/

+0

क्या समाधान अभी भी काम करता है यदि मेरे पास $ .get कॉल के भीतर सफलता का कार्य है? मैंने पहले कोशिश की थी, कोई भाग्य नहीं! – amir

+0

हां, यह संभव होना चाहिए। – Niko

10

$.when आप (कई Deferred रों गठबंधन है जो $.ajax करने देता है: उन वस्तुओं इस तरह जोड़ा जा सकता है - $ .Get एक jqXHR उद्देश्य यह है कि आस्थगित इंटरफ़ेस लागू करता है देता है रिटर्न)।

$.when($.get(1), $.get(2)).done(function(results1, results2) { 
    // results1 and results2 will be an array of arguments that would have been 
    // passed to the normal $.get callback 
}).fail(function() { 
    // will be called if one (or both) requests fail. If a request does fail, 
    // the `done` callback will *not* be called even if one request succeeds. 
}); 
संबंधित मुद्दे