3 category: JavaScript libraries
11 Also see the [promise cheatsheet](promise.html) and [Bluebird.js API](https://github.com/petkaantonov/bluebird/blob/master/API.md) (github.com).
18 .spread(okFn, errFn) // *
20 .catch(TypeError, errFn) // *
22 .map(function (e) { ··· }) // *
23 .each(function (e) { ··· }) // *
26 Those marked with `*` are non-standard Promise API that only work with Bluebird promises.
28 ### Multiple return values
32 return [ 'abc', 'def' ]
34 .spread(function (abc, def) {
40 Use [Promise.spread](http://bluebirdjs.com/docs/api/promise.spread.html)
49 function (pics, msgs, tweets) {
56 Use [Promise.join](http://bluebirdjs.com/docs/api/promise.join.html)
58 ### Multiple promises (array)
60 - [Promise.all](http://bluebirdjs.com/docs/api/promise.all.html)([p]) - expect all to pass
61 - [Promise.some](http://bluebirdjs.com/docs/api/promise.some.html)([p], count) - expect `count` to pass
62 - [Promise.any](http://bluebirdjs.com/docs/api/promise.any.html)([p]) - same as `some([p], 1)`
63 - [Promise.race](http://bluebirdjs.com/docs/api/promise.race.html)([p], count) - use `.any` instead
64 - [Promise.map](http://bluebirdjs.com/docs/api/promise.map.html)([p], fn, options) - supports concurrency
67 Promise.all([ promise1, promise2 ])
73 // succeeds if one succeeds first
81 Promise.map(urls, url => fetch(url))
86 Use [Promise.map](http://bluebirdjs.com/docs/api/promise.map.html) to "promisify" a list of values.
92 photos: get('photos'),
102 Use [Promise.props](http://bluebirdjs.com/docs/api/promise.props.html).
104 ### Chain of promises
107 function getPhotos() {
108 return Promise.try(() => {
109 if (err) throw new Error("boo")
114 getPhotos().then(···)
118 Use [Promise.try](http://bluebirdjs.com/docs/api/promise.try.html).
120 ### Node-style functions
123 var readFile = Promise.promisify(fs.readFile)
124 var fs = Promise.promisifyAll(require('fs'))
128 See [Promisification](http://bluebirdjs.com/docs/api/promisification.html).
130 ### Promise-returning methods
133 User.login = Promise.method((email, password) => {
135 throw new Error("Email not valid")
142 See [Promise.method](http://bluebirdjs.com/docs/api/promise.method.html).
147 User.login = Promise.coroutine(function* (email, password) {
148 let user = yield User.find({email: email}).fetch()
154 See [Promise.coroutine](http://bluebirdjs.com/docs/api/promise.coroutine.html).
158 <http://bluebirdjs.com/docs/api-reference.html>