.. -*- restructuredtext -*- In jQuery 1.5, jQuery has introduced a Deferred object in order to better handle callbacks. Along with Deferred, it introduced ``jQuery.when`` which allows, among other things, for multiplexing deferreds (waiting on multiple deferreds at the same time). While this is very nice if all deferreds are available at the same point, it doesn't really work if the resolution of a deferred can generate more deferreds, or for collections of deferreds coming from multiple sources (which may not be aware of one another). Deferred.queue tries to be a solution to this. It is based on the principle of FIFO multiple-producers multiple-consumers tasks queues, such as Python's `queue.Queue`_. Any code with a reference to the queue can add a promise to the queue, and the queue (which is a promise itself) will only be resolved once all promises within are resolved. Quickstart ---------- Deferred.queue has a very simple life cycle: it is dormant when created, it starts working as soon as promises get added to it (via ``.push``, or by providing them directly to its constructor), and as soon as the last promise in the queue is resolved it resolves itself. If any promise in the queue fails, the queue itself will be rejected (without waiting for further promises). Once a queue has been resolved or rejected, adding new promises to it results in an error. API --- ``jQuery.Deferred.queue([promises...])`` Creates a new deferred queue. Can be primed with a series of promise objects. ``.push(promise...)`` Adds promises to the queue. Returns the queue itself (can be chained). If the queue has already been resolved or rejected, raises an error. ``.then([doneCallbacks][, failCallbacks])`` Promise/A ``then`` method. ``.done(doneCallbacks)`` jQuery ``done`` extension to promise objects ``.fail(failCallbacks)`` jQuery ``fail`` extension to promise objects .. _queue.Queue: http://docs.python.org/dev/library/queue.html