【JSリファレンス】Promiseコンストラクター

更新日:2024/06/14

Promiseコンストラクターは、pending(保留)、fulfilled(履行)、rejected(拒否)の3つの状態を持つPromiseオブジェクトを生成して返します。

生成直後のオブジェクトの状態はpendingです。

pendingから、fulfilled または rejected への遷移時に、onFulfilledハンドラーまたはonRejectedハンドラーを呼び出すジョブをタスクキューに登録します。

登録されたジョブは現在のプログラムコードが終了してイベントループに戻った後に実行されます。

各ハンドラーの戻り値は、then()で生成されたPromiseオブジェクトの状態を遷移させます。
その結果、連鎖的にハンドラーを呼び出すジョブがタスクキューに登録されます。

 

■状態の確認

Promiseオブジェクトの状態は、ハンドラーの呼び出しによって判断します。
プログラムコードで確認する方法はありません。

ただし実行環境によっては、コンソール出力で確認可能です。

例えば Google Chromeのコンソールなら、次のように表示されます。

> new Promise(()=>{})
⋖ ▼ Promise {<pending>}
   ▶ [[Prototype]]: Promise
     [[PromiseState]]: "pending"
     [[PromiseResult]]: undefined

※[[PromiseState]]および[[PromiseResult]]は内部スロットのため、プログラムコードから参照できません。

 

■使用例

new Promise( resolve=>{
  const waitTime = 3000;
  setTimeout( ()=>resolve( waitTime ),waitTime );
})
.then( 
  time => console.log( `${time}ミリ秒待機しました` )
);

 

■async関数での利用

async関数内でawaitキーワードと共にPromiseオブジェクトを使用すると、Promiseが解決するまで待つことができます。

const sleep = time =>new Promise(
  resolve=>setTimeout( ()=>resolve(time),time)
);

(async ()=>{

    const time1 = await sleep(1000);
    console.log( `${time1}ミリ秒待機しました` );

    const time2 = await sleep(2000);
    console.log( `${time2}ミリ秒待機しました` );

})();
// 結果:
// 1000ミリ秒待機しました
// 2000ミリ秒待機しました

 

■コンストラクター

 

■プロパティ

 

■メソッド

 

■prototypeプロパティ

 

■prototypeメソッド

 

関連ページ

更新日:2024/06/14

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

スポンサーリンク

記事の内容について

null

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

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

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

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

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

 

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