Exercise 6: Promise.allSettled Implementation

Problem Statement

Create a function `allSettled(promises)` that waits for all promises to complete (both success/failure). Example: allSettled([Promise.resolve(1), Promise.reject(2)]) => [{status: "fulfilled", value: 1}, {status: "rejected", reason: 2}]

Sample Output:

await allSettled([Promise.resolve(1), Promise.reject(2)]) => [{status: "fulfilled", value: 1}, {status: "rejected", reason: 2}]

Solution

const allSettled = (promises) => {
  return Promise.all(promises.map(p =>
    Promise.resolve(p).then(value => ({status: "fulfilled", value}),
      reason => ({status: "rejected", reason}))
  ));
};

Explanation

Overall Goal:

  • Sabhi promises complete hone ka wait karna (success/failure).

Real world:

  • Multiple APIs: all results needed.
  • Error handling: partial failures handle.