Join our webinar on Wednesday, June 26, at 1pm EDTHow Chia Mitigates Risk in the Crypto Industry.Register
Socket
Socket
Sign inDemoInstall

promise-resolve-deep

Package Overview
Dependencies
0
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    promise-resolve-deep

Resolve a promise or value and all of its embedded promises (key values, elements of array, including nested)


Version published
Maintainers
1
Created

Readme

Source

promise-resolve-deep

Resolve a promise or value and all of its embedded promises (key values, elements of array, including nested)

Installation

npm install --save promise-resolve-deep

Sample usage

Use it like Proimse.resolve and it will recursively/deep travel and resolve all nested promises in arrays and objects. Also any object or an array that any promise resolves to, will be deeply resolved too.

// Promise can be either native or bluebird
require('promise-resolve-deep')(Promise);

// Sample value
let promise = {
  foo: Promise.resolve({
    bar: [Promise.resolve('foo'),Promise.resolve({
      xx: Promise.resolve().then(()=>'ala')
    })]
  })
};

Promise.resolveDeep(promise).then(val => {
 // val equals to
 // { foo: {bar: ['foo', {xx: 'ala'}]}}
});

Fun with APIs

// app is express application
// User and Book are bookshelf.js models
// needs: require('promise-resolve-deep')(Promise); to install the .resolveDeep method

app.get('/resources', wrap(() => {
  return {
    users: User.fetchAll().then(users => users.map(user => user.attributes)),
    books: Book.fetchAll().then(books => books.map(book => book.attributes))
  };
}));

// utilizing Promise.resolveDeep
function wrap(func) {
  return (req, res) => {
    Promise.resolve().then(() => func())
      .then(Promise.resolveDeep).then(data => {
        res.json(data);
      }).catch(err => res.status(500));
  }
}

If you want to write such declarative Promise-based APIs then you may also like this: https://github.com/virtkick/express-router-api

Author

Damian Kaczmarek rush@virtkick.com

License

MIT

Keywords

FAQs

Last updated on 23 Jul 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc