-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Examples Gallery
Q + Mongoose, as an example of adapting Node code. Based on this Stack Overflow question.
Q + node_redis, as an example of adapting the node_redis operations to Q (Coffeescript)
Flickr API Experiments, as an example of adapting jQuery Ajax promises for a JSONP API. Uses deferreds, the get
utility, Q.all
, and chaining.
Basic Chaining Example, showing how promises compose. Also illustrates Q.nfcall
as an alternative to using deferreds when working with Node.
Simple Chaining Example, briefly explains how chaining works.
Promises in a UI Context, a somewhat extensive and complicated "real world" example from @domenic's work at Barnes & Noble.com. Includes some helper functions to create alert/confirm/prompt dialogs that communicate their results via promises; adapts jQuery Ajax promises; and shows how to intercept and "re-throw" rejections at system boundaries.
Using Array.reduce to make your own Q.all. This doesn’t work as well as Q.all or Q.allResolved, but I found it very instructive in discovering how promises can be composed.
A simplistic HTTP "queue" application Where POST puts a request’s actively streaming body into the queue and GET pipes the request’s body to the response’s body.
How to adapt the XHR interface to an HTTP.read(url) that returns a Q
Control flow emulating "break" out of a loop of promises
Retry a some times with a delay between attempts
Old Narwhal code that illustrates functional composition of promises But definitely would not run today without some modifications.
XMLHttpRequest wrapped into a promise
Concurrent Promises using allResolved
, spread
and all
. Shows how one would go about having a bunch of functions that can execute together while another waits before executing, and how this could be done at the beginning of a chain, or during a chain. Plus, shows those concurrent promises piping through their values to the next function in the chain, together.
Using promises as a cache and resource sharing feature. Shows how to store results from long-running functions so the result can be used by many callers. Useful for web services.
Using promises as way to abstract the IndexedDb API into a usable interface. Wraps each async call to an IndexedDb instance/transaction/cursor or update with a promise. This allows the user to think only about the desired sequence of events, as opposed to the actual async sequence of events under the hood, without needing to worry about the order of operations.
Q.js examples - Small snippets to understand various api methods in Q.js