CodePark/ problems / Promise.allSettled
START PRACTICINGPRACTICE
Coding problem · JavaScript utilities › Promise combinators

Promise.allSettled

mediumabout 20 minutes in an interview

Implement promiseAllSettled(items), your own version of Promise.allSettled. Don't call Promise.allSettled or the other built-in combinators: Promise.all, Promise.any and Promise.race.

items is an array of promises and plain values. Return a promise that waits for every item to settle, which means to resolve or reject. It resolves with one record per item, in input order:

  • { status: "fulfilled", value } for an item that resolved. A plain value counts as resolved.
  • { status: "rejected", reason } for an item that rejected.

The returned promise never rejects. An empty array resolves to [].

Input: await promiseAllSettled([Promise.resolve(1), Promise.reject('no'), 3]) Output: [{ status: 'fulfilled', value: 1 }, { status: 'rejected', reason: 'no' }, { status: 'fulfilled', value: 3 }]