(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('/echo/json/'), jQuery.get('/echo/json/404')]) .done( function(result1, result2) { $('body').append(result1[1]); $('body').append("<br/>"); $('body').append(result2[1]); });