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.
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.
npm install promise-all-settled-by-key
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 }
// }
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 }
// }
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 }
// }