問題一覧に戻る
中級async
問題97: Promise.all

Promise.allによる並列実行を学びましょう。Promise.allは複数のPromiseを並列に実行し、全てが完了するまで待機します。全て成功した場合は結果の配列を返し、一つでも失敗した場合は即座にエラーを投げます。複数のAPIコールやデータ取得を並列に実行したい場合、全てのデータが揃ってから次の処理を行いたい場合に便利です。逐次処理よりもパフォーマンスが向上します。

const delay = (ms, value) => {
return new Promise(resolve => {
setTimeout(() => resolve(value), ms);
});
};

async function main() {
const promises = [
delay(100, "1番目"),
delay(200, "2番目"),
delay(150, "3番目")
];

const results = await Promise.(promises);
console.log("すべて完了:", results);

const numbers = await Promise.([
delay(50, 1),
delay(100, 2),
delay(75, 3)
]);

const sum = numbers.reduce((a, b) => a + b, 0);
console.log(`合計: ${sum}`);
}

main();