→
非同期処理の完了(もしくは失敗)の結果およびその結果の値を表します。
注: この機能は 内で利用可能です
プロミスの挙動と使用法について学ぶには、最初にをお読みください。
プロミス(Promise)は、作成された時点では分からなくてもよい値へのプロキシーです。非同期のアクションの成功値または失敗理由にハンドラーを結びつけることができます。これにより、非同期メソッドは結果の値を返す代わりに、未来のある時点で値を提供するプロミスを返すことで、同期メソッドと同じように値を返すことができるようになります。
Promise の状態は以下のいずれかとなります。
待機状態のプロミスは、何らかの値を持つ履行(fulfilled)状態、もしくは何らかの理由(エラー)を持つ拒否(rejected)状態のいずれかに変わります。そのどちらとなっても、then メソッドによって関連付けられたハンドラーが呼び出されます。対応するハンドラーが割り当てられたとき、既にプロミスが履行または拒否状態になっていても、そのハンドラーは呼び出されます。よって、非同期処理とその関連付けられたハンドラーとの競合は発生しません。
Promise.prototype.then() メソッドと Promise.prototype.catch() メソッドもまたプロミスを返すので、これらを連鎖(chain)させることができます。
¶以下、図と例を省く
返却されたプロミスが解決された場合、解決されたプロミスが、複数のプロミスが含まれる反復可能オブジェクトで定義された順番で入った集合配列の値によって解決されます。
拒否された場合は、反復可能オブジェクトの中で拒否された最初のプロミスの理由によって拒否されます。
これはすべての与えられたプロミスが解決または拒否された後で、それぞれのプロミスの結果を記述したオブジェクトの配列で解決される Promise を返します。
返されたプロミスが解決された場合、反復可能オブジェクトの中で最初に解決されたプロミスの値によって解決されます。
拒否された場合、最初に拒否されたプロミスの理由によって拒否されます。
一般に、ある値がプロミスであるかどうかがわからない場合は、代わりに Promise.resolve(value) を使用し、返値をプロミスとして扱います。
マイクロ タスクのキューやサービスを使用する方法については、のガイドを参照してください。
//コンソールにて let myFirstPromise = new Promise((resolve, reject) => { // 非同期処理が成功した場合は resolve(...) を呼び出し、失敗した場合は reject(...) を呼び出します。 // この例では、setTimeout(...) を使用して非同期コードをシミュレートします。 // 実際には、XHR や HTML5 API などを使用することになるでしょう。 setTimeout( function() { resolve("Success!") // Yay! Everything went well! }, 250) }) myFirstPromise.then((successMessage) => { // successMessage は、上記の resolve(...) 関数で渡したものです。 // 文字列である必要はありませんが、成功メッセージのみであれば文字列である可能性があります。 console.log("Yay! " + successMessage) });
¶省く