Skip to content

Dobby89/promise-all-settled-by-key

Repository files navigation

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 }
// }

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published