Deferred, without an ajax call
by GregWoods
JavaScript
var promises = [];
function doThreeThings() {
promises = [];
for (var n = 0; n < 3; n++) {
promises.push(doOneThing(n));
}
jQuery.when.apply(jQuery, promises).done(function () {
alert('all three done!');
});
}
function doOneThing(n) {
//here, we would usually perform an ajax async call, which returns a deferred object to pass
// back to our caller, which stores it and uses 'when' to execute code when all are 'resolved'
var dfd = jQuery.Deferred();
alert(n + " : " + dfd.state());
return dfd;
}
doThreeThings();
//at some later time, we resolve() each promise
promises[0].resolve();
promises[2].resolve();
promises[1].resolve();