【JSリファレンス】Promise.all()

更新日:2024/06/14

Promise.all()は、Promiseコンストラクターのメソッドです。

引数で複数のPromiseオブジェクトを受け取り、全てのオブジェクトが fulfilled(履行)に状態遷移するのを待つPromiseオブジェクトを生成して返します。

 

■構文

Promise.all ( iterable )
  1. iterable: Promiseオブジェクトを返すイテラブルなオブジェクト
生成されたPromiseオブジェクト

 

■遷移条件

生成されたオブジェクトは、次の条件で pending(保留)から他の状態へ遷移します。

▶fulfilled(履行)へ遷移

条件: 与えられた全てのPromiseオブジェクトの状態が fulfilled に遷移した場合。または、空の配列を引数に渡した場合。

その際のfulfilled値は、個々のPromiseオブジェクトの結果をセットした配列です。
※値はPromise.all()生成時の順番でセットされます。

▶rejected(拒否)へ遷移

条件: 与えられたPromiseオブジェクトの状態がどれか一つでも rejected に遷移した場合。

その際のrejected値は、最初にrejectedされたPromiseオブジェクトの値です。

 

■使用例

fulfilledされる例

const s = t => new Promise(r=>setTimeout(()=>r(t),t));

Promise.all( [s(5000),s(2200),s(1200),s(600)] )
    .then( v=>{
        v.forEach(e => {
            console.log( `${e}ミリ秒待機しました` );
        });
    });
// 結果:
// 5000ミリ秒待機しました
// 2200ミリ秒待機しました
// 1200ミリ秒待機しました
// 600ミリ秒待機しました

rejectedされる例

const isEven = v => new Promise(
    (resolve,reject)=>v % 2 ===0 
            ? resolve(v): reject(v)
);

Promise.all( [isEven(100),isEven(30),isEven(53),isEven(600)] )
    .then( v=>{
            console.log( "全て偶数です" );
        },v=>{
            console.log( `偶数でない値があります:${v}` );
        },
    );
// 結果: 偶数でない値があります:53

更新日:2024/06/14

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。