A lightweight Promises/A+ and when() implementation, plus other async goodies.
When.js is a rock solid, battle-tested Promises/A+ and
when() implementation, including a complete ES6 Promise shim. It's a powerful combination of small size, high performance, debuggability, and rich features:
- Resolve arrays and hashes of promises, as well as infinite promise sequences
- Execute tasks in parallel or sequentially
- Transform Node-style and other callback-based APIs into promise-based APIs
Check it out:
when through bower, or just clone the repo and load
when.js from the root.
bower install --save when
npm install --save when
Promises can be used to help manage complex and/or nested callback flows in a simple manner. To get a better handle on how promise flows look and how they can be helpful, there are a couple examples below (using commonjs).
This first example will print
"hello world!!!!" if all went well, or
"drat!" if there was a problem. It also uses rest to make an ajax request to a (fictional) external service.
var rest = require'rest';fetchRemoteGreetingthenaddExclamationcatchhandleErrordoneconsole.loggreeting;;// returns a when.js promise for 'hello world'return rest'';return greeting + '!!!!'return 'drat!';
The second example shows off the power that comes with when's promise logic. Here, we get an array of numbers from a remote source and reduce them. The example will print
150 if all went well, and if there was a problem will print a full stack trace.
var when = require'when';var rest = require'rest';whenreducewhenmapgetRemoteNumberList times10 sumdoneconsole.logresult;;// Get a remote array [1, 2, 3, 4, 5]return rest''thenJSONparse;return x + y;return x * 10;
Licensed under MIT. Full license here »
Please see the contributing guide for more information on running tests, opening issues, and contributing code to the project.