snippetjavascriptModeratepending
Promise.allSettled with typed results — handling mixed success/failure
Viewed 0 times
Promise.allSettledparallel asyncpartial failurefulfilledrejected
browsernodejs
Problem
Need to run multiple async operations in parallel where some may fail, without losing the successful results. Promise.all rejects on first failure. Need to collect all results with their status.
Solution
Promise.allSettled returns all results regardless of individual success or failure. Each result has a status of 'fulfilled' or 'rejected'. Helper to extract successes and failures.
Code Snippets
allSettled with partition helper
// Run multiple operations, collect all results
const results = await Promise.allSettled([
fetchUser(1),
fetchUser(2),
fetchUser(3),
]);
// Partition into successes and 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`);
// Reusable helper
function partitionSettled(results) {
const fulfilled = [];
const rejected = [];
for (const r of results) {
if (r.status === 'fulfilled') fulfilled.push(r.value);
else rejected.push(r.reason);
}
return { fulfilled, rejected };
}Revisions (0)
No revisions yet.