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

更新日:2024/06/14

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

引数で複数のPromiseオブジェクトを受け取り、どれか一つが解決するのを待つPromiseオブジェクトを生成して返します。

 

■構文

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

 

■遷移条件

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

▶fulfilled(履行)へ遷移

条件: 最初に解決したPromiseオブジェクトの状態が fulfilled の場合。

その際のfulfilled値は、最初にfulfilledに遷移したオブジェクトの値です。

▶rejected(拒否)へ遷移

条件: 最初に解決したPromiseオブジェクトの状態が rejected の場合。

その際のrejected値は、最初にrejectedに遷移したオブジェクトの値です。

空配列が引数で指定された場合、生成されたオブジェクトはpending(保留)から遷移しません。

 

■使用例

fulfilledされる例

  // 1000ミリ未満はrejectする
const s = t => new Promise(
    (resolve,reject)=>setTimeout(()=>{
        t < 1000 ?  reject(t) : resolve(t);
    },t));

Promise.race( [s(1200),s(3200),s(6000),s(2200)] )
    .then( v=>{
            console.log( `待機しました:${v}ミリ秒` );
        },v=>{
            console.log( `既定時間未満でした:${v}ミリ秒` );
        }
      );
// 結果:
// 待機しました:1200ミリ秒

rejectedされる例

  // 1000ミリ未満はrejectする
const s = t => new Promise(
    (resolve,reject)=>setTimeout(()=>{
        t < 1000 ?  reject(t) : resolve(t);
    },t));

Promise.race( [s(1200),s(3200),s(500),s(2200)] )
    .then( v=>{
            console.log( `待機しました:${v}ミリ秒` );
        },v=>{
            console.log( `既定時間未満でした:${v}ミリ秒` );
        }
      );
// 結果:
// 既定時間未満でした:500ミリ秒

更新日:2024/06/14

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

スポンサーリンク

記事の内容について

null

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

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

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

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

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

 

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