Back
JavaScriptMediumNew
What is the difference between Promise.all, Promise.race, and Promise.allSettled?
all = wait for all; race = first settled; allSettled = all outcomes regardless of failure.
Ideal Answer
These static Promise methods coordinate multiple async operations differently:
| Method | Resolves when | Rejects when | Result |
|---|---|---|---|
Promise.all |
All promises fulfill | Any promise rejects | Array of fulfilled values |
Promise.race |
First promise settles (fulfill or reject) | First rejection wins | First settled value/reason |
Promise.allSettled |
All promises settle (fulfill or reject) | Never rejects | Array of { status, value/reason } |
Promise.any |
First fulfillment | All reject | First fulfilled value |
JavaScript
const p1 = Promise.resolve(1)
const p2 = Promise.resolve(2)
const p3 = Promise.reject('fail')
await Promise.all([p1, p2]) // [1, 2]
await Promise.allSettled([p1, p3]) // [{status:'fulfilled',...}, {status:'rejected',...}]
await Promise.race([p1, p2]) // 1 (first to settle)
Interview tips
- Use
Promise.allfor parallel fetches where one failure should fail everything. - Use
Promise.allSettledwhen you need every outcome (e.g. batch API calls, partial success UI). - Use
Promise.racefor timeouts or first-responder patterns. Promise.allshort-circuits on first rejection — other promises still run but results are ignored.