whenAll jQuery Plugin
jQuery plugin to signal when multiple defers (usuaylly Ajax calls) are finished no matter their resolution.
JavaScript
(function (jQuery) {
jQuery.whenAll = function (deferreds) {
var lastResolved = 0;
var wrappedDeferreds = [];
for (var i = 0; i < deferreds.length; i++) {
wrappedDeferreds.push(jQuery.Deferred());
deferreds[i].always(function(jqXHR) {
wrappedDeferreds[lastResolved++].resolve(arguments);
});
}
return jQuery.when.apply(jQuery, wrappedDeferreds).promise();
};
}(jQuery));
jQuery.whenAll([jQuery.get('http://github.com'), jQuery.get('/echo/json/404')])
.done(
function(result1, result2) {
$('body').append(result1[1]);
$('body').append("<br/>");
$('body').append(result2[1]);
});