Futures (aka Deferreds aka Promises) are indeed cool. For a more general toolbox, check out <a href="https://github.com/coolaj86/futures" rel="nofollow">https://github.com/coolaj86/futures</a><p>What the linked article doesn't show is how you would create your own future objects, which in my point of view is the more useful thing. (I can always specify the error function using the more general $.ajax() so knowing that $.get() finally allows specifying both success and error with futures isn't that useful...). Besides just plain futures, the join and chainify abstractions (and the sequence abstraction that you can of course get elsewhere) from the futures library I linked allow you to create really nice code. Sequences alone heavily reduced my initial frustrations when using Node.
I'm finding that, with the aid of Backbone, the Deferred methodology is becoming obsolete. For instance, as mentioned by someone else in these comments, a great use case for Deferred is firing off multiple queries and waiting on their return.<p>You can accomplish this in Backbone, inherently even, by listening to change events in models. In my app, I used the Deferred methodology to begin with, but now that I'm refactoring the site into Backbone, everything is much cleaner (thanks to the additional structure that MVC provides).
What the article hints at, but doesn't really follow through on, is that you could use this to fire off multiple AJAX calls in parallel and the do something only when all of them have completed.
Futures/Promises are an interesting technique to do control flow. IMO, there are certain nuances like losing distinction between async/sync calls that work against the technique. I wrote an article about it at: <a href="http://javascriptturnsmeon.com/93769736" rel="nofollow">http://javascriptturnsmeon.com/93769736</a>
And if you'd like to use the same API in a non-browser environment, Underscore.Deferred is a complete port of jQuery.Deferred and jQuery.when that has no jQuery dependencies: <a href="https://github.com/wookiehangover/underscore.Deferred" rel="nofollow">https://github.com/wookiehangover/underscore.Deferred</a>