- Notifications
You must be signed in to change notification settings - Fork393
A solid, fast Promises/A+ and when() implementation, plus other async goodies.
License
cujojs/when
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
When.js is a rock solid, battle-testedPromises/A+ andwhen() implementation, including a completeES6 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
When.js is one of the many stand-alone components ofcujoJS, the JavaScript Architectural Toolkit.
Check it out:
- What's new
- API docs
- Read more about howpromises simplify async programming
Available aswhen throughbower, or just clone the repo and loadwhen.js from the root.
bower install --save whennpm install --save whenMore help & other environments »
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 usesrest to make an ajax request to a (fictional) external service.
varrest=require('rest');fetchRemoteGreeting().then(addExclamation).catch(handleError).done(function(greeting){console.log(greeting);});functionfetchRemoteGreeting(){// convert native Promise to a when.js promise for 'hello world'varresult=rest('http://example.com/greeting');returnwhen(result)}functionaddExclamation(greeting){returngreeting+'!!!!'}functionhandleError(e){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 print150 if all went well, and if there was a problem will print a full stack trace.
varwhen=require('when');varrest=require('rest');when.reduce(when.map(getRemoteNumberList(),times10),sum).done(function(result){console.log(result);});functiongetRemoteNumberList(){// Get a remote array [1, 2, 3, 4, 5]returnrest('http://example.com/numbers').then(JSON.parse);}functionsum(x,y){returnx+y;}functiontimes10(x){returnx*10;}
Licensed under MIT.Full license here »
Please see thecontributing guide for more information on running tests, opening issues, and contributing code to the project.
Much of this code was inspired by the async innards ofwire.js, and has been influenced by the great work inQ,Dojo's Deferred, anduber.js.
About
A solid, fast Promises/A+ and when() implementation, plus other async goodies.
Resources
License
Contributing
Uh oh!
There was an error while loading.Please reload this page.
