DEV Community ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป

DEV Community ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป is a community of 964,423 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Create account Log in
Lรขm
Lรขm

Posted on

Simple Bluebird.Js Cheat Sheet

Reference

Generators

User.login = Promise.coroutine(function* (email, password) {
  let user = yield User.find({email: email}).fetch()
  return user
})๏ปฟ
Enter fullscreen mode Exit fullscreen mode

See Promise.coroutine.

Promise-returning methods

User.login = Promise.method((email, password) => {
  if (!valid)
    throw new Error("Email not valid")

  return /* promise */
})๏ปฟ
Enter fullscreen mode Exit fullscreen mode

See Promise.method.

Node-style functions

var readFile = Promise.promisify(fs.readFile)
var fs = Promise.promisifyAll(require('fs'))๏ปฟ
Enter fullscreen mode Exit fullscreen mode

See Promisification.

Chain of promises

function getPhotos() {
  return Promise.try(() => {
    if (err) throw new Error("boo")
    return result
  })
}

getPhotos().then(ยทยทยท)๏ปฟ
Enter fullscreen mode Exit fullscreen mode

Use Promise.try.

Object

Promise.props({
  photos: get('photos'),
  posts: get('posts')
})
.then(res => {
  res.photos
  res.posts
})๏ปฟ
Enter fullscreen mode Exit fullscreen mode

Use Promise.props.

Multiple promises (array)

Promise.all([ promise1, promise2 ])
  .then(results => {
    results[0]
    results[1]
  })

// succeeds if one succeeds first
Promise.any(promises)
  .then(results => {
  })
Enter fullscreen mode Exit fullscreen mode
Promise.map(urls, url => fetch(url))
  .then(ยทยทยท)

Enter fullscreen mode Exit fullscreen mode

Use Promise.map to "promisify" a list of values.### Multiple promises

Promise.join(
  getPictures(),
  getMessages(),
  getTweets(),
  function (pics, msgs, tweets) {
    return ยทยทยท
  }
)๏ปฟ
Enter fullscreen mode Exit fullscreen mode

Use Promise.join

Multiple return values

.then(function () { return [ 'abc', 'def' ] }) 
Enter fullscreen mode Exit fullscreen mode

Use Promise.spread

Example

promise
  .then(okFn, errFn)
  .spread(okFn, errFn)        // *
  .catch(errFn)
  .catch(TypeError, errFn)    // *
  .finally(fn)
  .map(function (e) { ยทยทยท })  // *
  .each(function (e) { ยทยทยท }) // *
Enter fullscreen mode Exit fullscreen mode

Those marked with * are non-standard Promise API that only works with Bluebird promises.

Top comments (0)

๐ŸŒš Friends don't let friends browse without dark mode.

Sorry, it's true.