複数のPromiseを並列実行し全て完了したら結果を返す
// ── 個別await(直列)vs Promise.all(並列)──────────
// ❌ 直列: 合計3秒かかる(1秒 + 1秒 + 1秒)
async function sequential() {
const user = await fetchUser(); // 1秒待つ
const posts = await fetchPosts(); // さらに1秒待つ
const friends = await fetchFriends(); // さらに1秒待つ
return { user, posts, friends };
}
// ✅ 並列: 最長1秒で完了(同時に実行)
async function parallel() {
const [user, posts, friends] = await Promise.all([
fetchUser(), // ┐
fetchPosts(), // ├ この3つが同時に開始される
fetchFriends(), // ┘
]);
return { user, posts, friends };
}
// ⚠️ 注意: 1つでも失敗すると全体がrejectされる
// → 個別にエラーを扱いたい場合は Promise.allSettled を使う
const results = await Promise.allSettled([
fetchUser(),
fetchPosts(), // これが失敗しても他の結果は取れる
]);
results.forEach(result => {
if (result.status === 'fulfilled') {
console.log('成功:', result.value);
} else {
console.log('失敗:', result.reason);
}
});1つでも失敗すると全体がrejectされる。失敗を個別に扱いたい場合はPromise.allSettledを使う。