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.
The problem I think is that $.each
is returning your dataArray
, not a list of Deferred
objects like you want to feed to $.when
.