raising jquery deferred.then() once all deferred objects have been resolved raising jquery deferred.then() once all deferred objects have been resolved ajax ajax

raising jquery deferred.then() once all deferred objects have been resolved


as Eli pointed out, $.when() accepts a comma separated list of arguments and not an array. using Function.apply() to pass in the array seems to do the trick.

function saveAll(callback) {    var dataArray = [], deferreds = [];    $.each(dataArray, function() {        deferreds.push( save() );    });    $.when.apply(window, deferreds).then(callback);}


You should be able to pass a comma-separated list of deferred objects to $.when and .then will execute once they all have resolved.

http://api.jquery.com/jQuery.when/


The problem I think is that $.each is returning your dataArray, not a list of Deferred objects like you want to feed to $.when.