TypeScript

Promise.allSettled — Typed Results

admin by @admin ADMIN
Jun 12, 2026
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
`Promise.all` rejects on the first failure; `allSettled` waits for every promise and gives you per-promise status. Pair with a type guard to split fulfilled from rejected.
TypeScript
Raw
async function fetchAll<T>(urls: string[]): Promise<{ url: string; data?: T; error?: unknown }[]> {
  const results = await Promise.allSettled(
    urls.map(async (url) => {
      const r = await fetch(url);
      if (!r.ok) throw new Error(`HTTP ${r.status}`);
      return r.json() as Promise<T>;
    })
  );
  return results.map((r, i) =>
    r.status === 'fulfilled'
      ? { url: urls[i]!, data: r.value }
      : { url: urls[i]!, error: r.reason }
  );
}

const out = await fetchAll<{ id: number }>(['/a.json', '/b.json', '/c.json']);
const succeeded = out.filter((r): r is typeof r & { data: { id: number } } => 'data' in r);
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.