-
Notifications
You must be signed in to change notification settings - Fork 396
Changelog
Brian Cavalier edited this page Aug 10, 2012
·
24 revisions
- Code and unit test cleanup and streamlining--no functional changes.
- 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
.
- Fixed a deviation from the Promises/A spec where returning undefined from a callback or errback would cause the previous value to be forwarded. See #31
-
This could be a breaking change if you depended on this behavior. If you encounter problems, the solution is to ensure that your promise callbacks (registered either with
when()
or.then()
) return what you intend, keeping in mind that not returning something is equivalent to returningundefined
.
-
This could be a breaking change if you depended on this behavior. If you encounter problems, the solution is to ensure that your promise callbacks (registered either with
- This change also restores compatibility with the promises returned by
jQuery.get()
, which seem to reject with themselves as the rejection value. See issue #41 for more information and discussion. Thanks to @KidkArolis for raising the issue.
-
promise.otherwise(errback)
as a shortcut forpromise.then(null, errback)
. See discussion here and here. Thanks to @jonnyreeves for suggesting the name "otherwise". - when/debug now detects exceptions that typically represent coding errors, such as SyntaxError, ReferenceError, etc. and propagates them to the host environment. In other words, you'll get a very loud stack trace.
- Updated wiki map/reduce examples, and added simple promise forwarding example
- Fix for calling
when.any()
without a callback (#33) - Fix version number in
when.js
source (#36)
-
when.all/any/some/map/reduce
can all now accept a promise for an array in addition to an actual array as input. This allows composing functions to do interesting things likewhen.reduce(when.map(...))
-
when.reject(promiseOrValue)
that returns a new, rejected promise. -
promise.always(callback)
as a shortcut forpromise.then(callback, callback)
-
Highly experimental when/debug module: a drop-in replacement for the main
when
module that enables debug logging for promises created or consumed by when.js
- Travis CI integration
- Fix for cancelable deferred not invoking progress callbacks. (#24 Thanks @scothis)
- The promise returned by
when.chain
now rejects when the input promise rejects.
- Fix for specific situation where
null
could incorrectly be used as a promise resolution value (#23)
- Updated README for running unit tests in both Node and Browsers. See Running the Unit Tests below.
- Set package name to 'when' in package.json
- Fix for rejections propagating in some cases when they shouldn't have been (#19)
- Using buster.js for unit tests now.
- First official when.js release as a part of cujojs.
- Added when/cancelable decorator for creating cancelable deferreds
- Added when/delay and when/timeout helpers for creating delayed promises and promises that timeout and reject if not resolved first.
- Added when/apply helper module for using arguments-based and variadic callbacks with
when.all
,when.some
,when.map
, or any promise that resolves to an array. (#14) -
.then()
,when()
, and all other methods that accept callback/errback/progress handlers will throw if you pass something that's not a function. (#15)
-
when.js
now assimilates thenables that pass the Promises/A duck-type test, but which may not be fully Promises/A compliant, such as jQuery's Deferred and curl's global API (See the API at a glance section)-
when()
, andwhen.all/some/any/map/reduce/chain()
are all now guaranteed to return a fully Promises/A compliant promise, even when their input is not compliant. - Any non-compliant thenable returned by a callback or errback will also be assimilated to protect subsequent promises and callbacks in a promise chain, and preserve Promises/A forwarding guarantees.
-
-
Important Fix for some AMD build/optimizer tools: Switching back to more verbose, builder-friendly boilerplate
- If you are using when.js 0.10.3 with the dojo or RequireJS build tools, you should update to v.10.4 as soon as possible.
Warning: This version will not work with most AMD build tools. You should update to 0.10.4 as soon as possible.
- Minor
package.json
updates - Slightly smaller module boilerplate
- Performance optimizations for
when.map()
(thanks @smitranic), especially for large arrays where themapFunc
is also async (i.e. returns a promise) -
when.all/some/any/map/reduce
handle sparse arrays (thanks @rwaldrn) - Other minor performance optimizations
- Minor tweaks (thanks @johan)
- Add missing semis that WebStorm didn't catch
- Fix DOH submodule ref, and update README with info for running unit tests
-
when.map
andwhen.reduce
- just like Array.map and Array.reduce, but they operate on promises and arrays of promises - Lots of internal size and performance optimizations
- Still only 1k!
- Important fix for break in promise chains