I've read a lot of threads on here and haven't found an answer that satisfies my problem.
Basically I'm building n AJAX calls and want to do something only once they've all returned.
But whatever I try, done()
the callback fires too early. Here's my code:
// turn the URL array into an AJAX request array
for (var i=0; i<mediaRequests.length; i++) {
mediaRequests[i] = $.ajax(mediaRequests[i], {dataType: 'jsonp'});
}
$.when($, mediaRequests).done(function() {
var responses = arguments[1];
// for each response...
for (var i=0; i<responses.length; i++) {
var data = responses[i].responseJSON;
console.log(data);
}
});
But the console prints out undefined
.
Why isn't $.when($, mediaRequests).done()
giving me the responses?