JavaScriptで複数Promise処理の備忘録
前提条件(Promise配列)
const promises = [ promise0, promise1, promise2 ... ];
Promise.all( promises )
-
promises
配列ですべてのPromise
がresolve
then
に処理が移譲される。
コールバック関数の引数はもとのpromises
と同じ順番の各Promise
でresolve
された値の配列。 -
promises
配列でreject
を検出
catch
に処理が移譲される。
コールバック関数の引数はreject
を検出したPromise
のエラー。
Promise.allSettled( promises )
常にthen
に処理が移譲される。
コールバック関数の引数はもとのpromises
配列と同じ順番の各Promise
結果の配列。
-
resolve
が返される要素の場合の処理結果
{ status: "fulfilled", value: (resolve
された値) } -
reject
が返される要素の場合の処理結果
{ status: "rejected", error: (reject
されたエラー) }
Promise.any( promises )
-
promises
配列でresolve
した結果がある場合
then
に処理が移譲される。
コールバック関数の引数は最初にresolve
された値。 -
promises
配列ですべてreject
された場合
catch
に処理が移譲される。
コールバック関数の引数はもとのpromises
と同じ順番の各Promise
結果(reject
されたエラー)の配列をerrors属性に持つAggregateError
オブジェクト。
Promise.race( promises )
最初に解決した処理により分岐する。
-
resolve
された場合
then
に処理が移譲される。
コールバック関数の引数は最初にresolve
されたPromise
の値。 -
reject
された場合
catch
に処理が移譲される。
コールバック関数の引数は最初にreject
されたPromise
のエラー。