Qraft(クラフト) 資格・学習クイズアプリ

JavaScript入門 練習問題 31:非同期処理:複数のPromiseをまとめて扱う機能

次のコードの実行結果として正しいものはどれですか?

```javascript
const p1 = Promise.resolve(1);
const p2 = Promise.resolve(2);
const p3 = Promise.resolve(3);

Promise.all([p1, p2, p3]).then(results => {
console.log(results);
});
```

  1. [1, 2, 3]という配列が出力される
  2. 1という数値のみが出力される
  3. Promiseオブジェクトの配列が出力される
  4. undefinedという値が出力される
  5. 3という数値のみが出力される

Qraftユーザーの成績:難易度 Dランク(レーティング1107)・正答率 73%(11/15回正解)
レーティングは解いた人の実力と正誤から算出する難しさ(初期値1200)。ランクはその全問題中の順位(S+が最難関、F-が最易)

正解と解説を見る
正解:[1, 2, 3]という配列が出力される

Promise.allは複数のPromiseをまとめて扱い、すべてが解決(=処理が正常に完了すること)した時点で、それぞれの結果を順序通りに配列として返します。

【正解の理由】
p1、p2、p3はすべて即座に解決されるPromiseであり、Promise.allはこれらの解決値を元の順序のまま配列にまとめてthenに渡すため、[1, 2, 3]が出力されます。

【不正解の理由】
• 「1という数値のみが出力される」:Promise.allは配列内のすべてのPromiseの結果をまとめて返すため、最初の値だけが渡されることはない
• 「Promiseオブジェクトの配列が出力される」:Promise.allはPromiseそのものではなく、各Promiseが解決した後の実際の値をまとめて返す
• 「undefinedという値が出力される」:各Promiseにはresolve(1)などで明確な値が設定されているため、undefinedにはならない
• 「3という数値のみが出力される」:Promise.allは最後の値だけを返すのではなく、すべての結果を配列としてまとめて返す

← 前の問題問題一覧次の問題 →
アプリで解いてレーティングを上げる(無料・登録不要)