こんにちは、さるまりんです。
二つの処理を Promise.all() で待っているとき、あとから渡した方が先に終わったら、結果の配列はどう並ぶのでしょうか。
両方が成功すると、結果は Promise.all() に渡した順番 で並びます。
試してみましょう。
function finishAfter(label, ms) {
return new Promise((resolve) => {
setTimeout(() => {
console.log(label + "が完了");
resolve(label);
}, ms);
});
}
Promise.all([
finishAfter("A", 100),
finishAfter("B", 10),
]).then(([a, b]) => {
console.log("結果: " + a + ", " + b);
});
実行すると、こう表示されます。
Bが完了
Aが完了
結果: A, B
先に終わったのは B ですが、結果の先頭は A です。A を一つ目に渡したので、A の結果が一つ目に入るんですね。
例えば、ユーザー情報と注文履歴をこの順に渡したら、結果の一つ目はユーザー情報、二つ目は注文履歴です。どちらが先に届いても、同じ書き方で受け取れるので便利ですね。
なお、どれか一つでも失敗すると、この例の then() に結果は渡りません。
実際に複数のAPIを呼ぶ例は、JavaScriptでAPIを呼び出して結果をまとめて処理する方法もどうぞ。
読んでくださってありがとうございます。
それではまた!