Package Exports
- when
- when/apply
- when/delay
- when/timeout
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (when) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
when.js 
A lightweight CommonJS Promises/A and when()
implementation. It also provides several other useful Promise-related concepts, such as joining and chaining, and has a robust unit test suite.
It's just over 1k when compiled with Google Closure (w/advanced optimizations) and gzipped.
when.js was derived from the async core of wire.js.
What's New?
1.4.1
- Code and unit test cleanup and streamlining--no functional changes.
1.4.0
- Create a resolved promise:
when.resolve(value)
creates a resolved promise forvalue
. See API docs. - Resolve/reject return something useful:
deferred.resolve
anddeferred.reject
now return a promise for the fulfilled or rejected value. - Resolve a deferred with another promise:
deferred.resolve(promise)
- whenpromise
resolves or rejects, so willdeferred
.
Docs & Examples
Quick Start
AMD
git clone https://github.com/cujojs/when
orgit submodule add https://github.com/cujojs/when
Configure your loader with a package:
packages: [ { name: 'when', location: 'path/to/when/', main: 'when' }, // ... other packages ... ]
define(['when', ...], function(when, ...) { ... });
orrequire(['when', ...], function(when, ...) { ... });
Script Tag
git clone https://github.com/cujojs/when
orgit submodule add https://github.com/cujojs/when
<script src="path/to/when/when.js"></script>
when
will be available aswindow.when
Node
npm install when
var when = require('when');
RingoJS
ringo-admin install cujojs/when
var when = require('when');
Running the Unit Tests
Install buster.js
npm install -g buster
Run unit tests in Node:
buster test -e node
Run unit tests in Browsers (and Node):
buster server
- this will print a url- Point browsers at
/capture, e.g. localhost:1111/capture
buster test
orbuster test -e browser
References
Much of this code was inspired by @unscriptable's tiny promises, the async innards of wire.js, and some gists here, here, here, and here
Some of the code has been influenced by the great work in Q, Dojo's Deferred, and uber.js.