jQuery: Wait till multiple GET requests are successully processed

amir picture amir · Mar 28, 2012 · Viewed 13.8k times · Source

I need to issue multiple $.get requests, process their responses, and record the results of the processing in the same array. The code looks like this:

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

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

Is there anyway to ensure that all the success functions have completed, before I proceed to the rest of my code?

Answer

Niko picture Niko · Mar 28, 2012

There is a very elegant solution: the jQuery Deferred object. $.get returns a jqXHR object that implements the Deferred interface - those objects can be combined like this:

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

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

Read more at http://api.jquery.com/category/deferred-object/ and http://api.jquery.com/jQuery.when/