Wait for all promises to complete regardless of whether they resolve or reject, getting results for each one.
Explanation
Promise.allSettled(): Returns a promise that resolves when all input promises settle (resolve or reject).- Each result object has
status(‘fulfilled’ or ‘rejected’) and eithervalueorreason. - Unlike
Promise.all(), it doesn’t short-circuit on first rejection. - Useful for batch operations where you need all results, including failures.
Usage
To handle multiple promises and get all outcomes:
// Fetch multiple resources, handle individual failures
const urls = [
'https://api.example.com/user/1',
'https://api.example.com/user/2',
'https://api.example.com/invalid', // Will fail
];
const results = await Promise.allSettled(
urls.map(url => fetch(url).then(r => r.json()))
);
results.forEach((result, index) => {
if (result.status === 'fulfilled') {
console.log(`User ${index + 1}:`, result.value);
} else {
console.error(`User ${index + 1} failed:`, result.reason);
}
});
// Separate successes from failures
const successes = results
.filter(r => r.status === 'fulfilled')
.map(r => r.value);
const failures = results
.filter(r => r.status === 'rejected')
.map(r => r.reason);
console.log(`${successes.length} succeeded, ${failures.length} failed`);