Interview question
What is the difference between Promise.all(), Promise.race(), Promise.allSettled(), and Promise.any()? Promise.all(), Promise.race(), Promise.allSettled(), और Promise.any() में क्या अंतर है?
Answer
| Method | Resolves when | Rejects when |
|---|---|---|
| Promise.all() | All promises fulfill | Any one rejects (fails fast) |
| Promise.race() | First promise settles (fulfilled or rejected) | First settled is a rejection |
| Promise.allSettled() | All promises settle, regardless of outcome | Never rejects |
| Promise.any() | First promise fulfills | All promises reject |
const p1 = Promise.resolve(1);
const p2 = new Promise(res => setTimeout(() => res(2), 100));
const p3 = Promise.reject('error');
// Promise.all - fails fast on first rejection
Promise.all([p1, p2])
.then(results => console.log(results)); // [1, 2]
Promise.all([p1, p3])
.catch(err => console.log('Failed:', err)); // Failed: error
// Promise.race - first to settle wins
Promise.race([p1, p2])
.then(result => console.log('First:', result)); // First: 1
// Promise.allSettled - always resolves with status of each
Promise.allSettled([p1, p3]).then(results => {
console.log(results);
// [{status:'fulfilled', value:1}, {status:'rejected', reason:'error'}]
});
// Promise.any - first fulfillment, ignores rejections unless all fail
Promise.any([p3, p2])
.then(result => console.log('First success:', result)); // First success: 2
// Practical use case - fetch data from multiple APIs concurrently
async function loadDashboard() {
const [users, orders, stats] = await Promise.all([
fetch('/api/users').then(r => r.json()),
fetch('/api/orders').then(r => r.json()),
fetch('/api/stats').then(r => r.json())
]);
return { users, orders, stats };
}| Method | कब resolve होता है | कब reject होता है |
|---|---|---|
| Promise.all() | सभी promises fulfill हों | कोई एक reject हो |
| Promise.race() | पहला promise settle हो | पहला settled reject हो |
| Promise.allSettled() | सभी settle हों | कभी reject नहीं होता |
| Promise.any() | पहला fulfill हो | सभी reject हों |
const p1 = Promise.resolve(1);
const p2 = new Promise(res => setTimeout(() => res(2), 100));
const p3 = Promise.reject('error');
// Promise.all - पहली rejection पर fail
Promise.all([p1, p2]).then(results => console.log(results)); // [1, 2]
// Promise.race - पहला settle जीतता है
Promise.race([p1, p2]).then(result => console.log('First:', result)); // 1
// Promise.allSettled
Promise.allSettled([p1, p3]).then(results => console.log(results));
// Promise.any
Promise.any([p3, p2]).then(result => console.log('Success:', result)); // 2
// Multiple APIs एक साथ
async function loadDashboard() {
const [users, orders] = await Promise.all([
fetch('/api/users').then(r => r.json()),
fetch('/api/orders').then(r => r.json())
]);
return { users, orders };
}Was this answer clear?