⊗jsSpPrmAr 170 of 294 menu

JavaScriptでのPromise配列の操作

ここでは、Promise配列を扱うのに便利な2つのメソッドを 解説します。 メソッド Promise.all は、 配列として渡されたすべてのPromiseが完了するまで コードの実行を待機し、 メソッド Promise.race は、 配列内の最初のPromiseが完了するのを待ち、 残りを破棄します。

両メソッドは、その結果として新しいPromiseを 返します。メソッド Promise.all の結果である このPromiseの値は、渡されたすべてのPromiseの 結果を集めた配列になります (結果の順序は配列内のPromiseの順序に対応します)。 一方、Promise.race の結果は、 最初に完了したPromiseの結果になります。

実際に見てみましょう。以下のようなPromiseの配列があるとします:

let promises = [ new Promise(resolve => setTimeout(() => resolve(1), 1000)), new Promise(resolve => setTimeout(() => resolve(2), 2000)), new Promise(resolve => setTimeout(() => resolve(3), 3000)), ];

Promise.all を使用して、 配列内のすべてのPromiseの完了を待ってみましょう:

Promise.all(promises).then(function(res) { console.log(res); // [1, 2, 3] と表示されます - すべてのPromiseの結果 });

次に、Promise.race を使用して、 配列内の最初のPromiseの完了を待ってみましょう:

Promise.race(promises).then(function(res) { console.log(res); // 1 と表示されます - 最初に完了したPromiseの結果 });

配列内のPromiseのうち1つでも拒否(rejected)されると、 結果を表すPromiseは即座に rejected 状態に 移行します。したがって、 発生した例外は、例えば catch を通じて、 これまで学習した通常の方法で捕捉することができます:

Promise.all(promises).then(function(res) { console.log(res); }).catch(function(err) { console.log(err); });

内部に1秒から 10 秒までのランダムな遅延が 設定されたPromiseを返す関数を作成してください。 Promiseは、この遅延時間をその結果として返すものとします。 ループとあなたの関数を使用して、 配列を 10 個のPromiseで埋めてください。

前のタスクで作成したPromise配列を使用して、 コンソールに最初に完了したPromiseの結果が 表示されるようにしてください。

前のタスクで作成したPromise配列を使用して、 コンソールにすべてのPromiseの結果の合計が 表示されるようにしてください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否