Loading article...
Promise.allSettled() returns a promise that resolves after all input promises have settled (either fulfilled or rejected). Unlike Promise.all(), it never rejects—it always returns an array of result objects describing each promise's outcome.
Promise.allSettled returns a promise that:
Each result is an object with shape:
{ status: "fulfilled", value: result }{ status: "rejected", reason: error }Use Promise.resolve(...) to handle non-promise inputs.
results[][] immediatelypromiseAllSettledfunction promiseAllSettled(iterable) { return new Promise((resolve) => { const promises = Array.from(iterable); const results = []; let settledCount = 0; if (promises.length === 0) return resolve([]); promises.forEach((p, i) => { Promise.resolve(p) .then(value => { results[i] = { status: "fulfilled", value }; }) .catch(reason => { results[i] = { status: "rejected", reason }; }) .finally(() => { settledCount++; if (settledCount === promises.length) { resolve(results); } }); }); }); }
promiseAllSettled([ Promise.resolve(1), Promise.reject("fail"), 3 ]).then(console.log); /* [ { status: "fulfilled", value: 1 }, { status: "rejected", reason: "fail" }, { status: "fulfilled", value: 3 } ] */
Test your understanding with 3 quick questions