With jQuery I know that I can use $.when() to wait for all of multipe Deferreds to be resolved. (Or for the first one to be rejected.)
Based on Kevin B's code, here's an approach that uses a master Deferred object:
var masterDeferred = new $.Deferred(),
reqOne = $.post("foo.php"),
reqTwo = $.post("bar.php");
masterDeferred.done(function() {
// do stuff
});
reqOne.done(function() {
masterDeferred.resolve();
});
reqTwo.done(function() {
masterDeferred.resolve();
});
I think I'm right in saying that the simplest form of resolving the masterDeferred would be :
reqOne.done(masterDeferred.resolve);
reqTwo.done(masterDeferred.resolve);
But separate done functions will allow you to branch internally and call .resolve(), .reject(), .resolveWith(...) or .rejectWith(...) as appropriate, together with masterDeferred callbacks of the general form :
masterDeferred.then( doneCallbacks, failCallbacks );