1.0.3 • Published 5 years ago

promise-all-settled-by-key v1.0.3

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

Promise All Settled By Key

Build Status Total Downloads Latest Release License

Returns a promise that resolves after all of the given promises have either resolved or rejected, with an object that contains the resolved status and value of each promise.

Why?

Promise.allSettled() returns promises in an array with no index or key, so you can't track what happened to which promise.

However, this package makes it possible to determine the outcome and value of specific promises because it returns each promise by key.

Installation

npm install promise-all-settled-by-key

Usage

import promiseAllSettledByKey from 'promise-all-settled-by-key';

const promiseMap = {
    theNumberThree: Promise.resolve(3),
    getFoo: new Promise((resolve, reject) => setTimeout(reject, 100, 'foo error'),
    nope: new Promise((resolve, reject) => setTimeout(reject, 100))
}

promiseAllSettledByKey(promiseMap).then(settled => {
    console.log(settled);
});

// Expected output
// {
//     theNumberThree: { resolved: true, value: 3 }
//     getFoo: { resolved: false, value: 'foo error' },
//     nope: { resolved: false, value: undefined }
// }

Resolved ONLY

You can set { onlyResolved = true } to return only the resolved promises.

promiseAllSettledByKey(promiseMap, { onlyResolved: true }).then(settled => {
    console.log(settled);
});

// Expected output
// {
//     theNumberThree: { resolved: true, value: 3 }
// }

Rejected ONLY

You can set { onlyRejected = true } to return only the rejected promises.

promiseAllSettledByKey(promiseMap, { onlyRejected: true }).then(settled => {
    console.log(settled);
});

// Expected output
// {
//     getFoo: { resolved: false, value: 'foo error' },
//     nope: { resolved: false, value: undefined }
// }