Async & Promisesmedium
Implement Promise.allSettled(promises)
Implement `Promise.allSettled` — unlike `Promise.all`, it waits for all promises and returns an array of `{ status, value/reason }` objects, never rejecting.
Asked at Meta, Google
Answer
function promiseAllSettled(promises) { return Promise.all( promises.map(p => Promise.resolve(p) .then(value => ({ status: 'fulfilled', value })) .catch(reason => ({ status: 'rejected', reason })) ) ) } // Test promiseAllSettled([ Promise.resolve(1), Promise.reject('oops'), Promise.resolve(3), ]).then(console.log) // [ // { status: 'fulfilled', value: 1 }, // { status: 'rejected', reason: 'oops' }, // { status: 'fulfilled', value: 3 }, // ]