はじめに
非同期パターンのプロミスについて、自分なりにまとめてみることにしました。
プロミスとは
プロミスを簡単に説明するなら、「非同期処理の結果の値(失敗も含む)を表現するオブジェクト」です。
プロミスの動作
- 非同期処理をする、ある関数(Function A)があった時、このFunction Aを呼び出すとPromiseを返します。
- このPromiseは、非同期処理が完了(fulfilled) or 非同期処理が失敗(rejected)のどっちかが起きることは保証されています。
- このPromiseがfulfilled/rejectedが起きていない場合は、非同期処理が完了していない(pending)の状態となります。
プロミスの状態まとめ
つまり、プロミスは3つの状態があります。
- 非同期処理が完了(fulfilled)
- 非同期処理が失敗(rejected)
- 非同期処理が完了していない(pending)
プロミス使用パターン
Promise.then([ハンドラ関数A],[ハンドラ関数B])
・ パターンとして、成功の場合に呼び出す関数をハンドラ関数A、失敗したときに呼び出す関数をハンドラ関数Bを呼ぶようにすると、非同期処理が完了し、プロミスが成功した時はハンドラ関数Aが実行され、失敗したときはハンドラ関数Bが実行されます。
.then() は処理結果を受け取り、新しいプロミスオブジェクトを作成して戻り値として返却するメソッドです。
・ 図は、はじめのPromise Xが解決された後、ハンドラ関数の戻り値によりPromise Yが解決される流れをイメージしています。[結構この図、力作ですw]