コツコツFIRE日記

ポイ活・投資でFIREを達成するまでの道のりを日記にします!

Promise の基本プロセスについて図でまとめる

f:id:walk0204:20210904210414p:plain

記事目安...5分

はじめに

javascript, nodejs の 非同期処理を行う、Promise のプロセスについてのまとめです。

遷移図

黒色の四角は、実行される関数を、
水色の四角は、Promise のステータスを表します。

f:id:walk0204:20210904193821p:plain

Promise のステータス

  • appending: Promise の初期の状態、もしくは実行中の状態
  • fulfilled: resolve() メソッドが呼び出されて、処理が正常に完了した状態。
  • rejected: rejected() メソッドが呼び出されて、処理が失敗した状態

プロセス分岐の解説

Promise のプロセスは、ステータス遷移後3パターンに分岐します。

f:id:walk0204:20210904195935p:plain

①fulfilled ステータスから then() メソッドを実行する

fulfilled ステータスから、Promise.prototype.then(onFulfilled[, onRejected]) メソッドを実行できます。

これにより、引数の onFulfilled に書いた関数で、後続の処理を行うことができます。

参考: https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise/then

②rejected ステータスから then()メソッドを実行する

rejected ステータスから、Promise.prototype.then(onFulfilled[, onRejected]) メソッドを実行できます。

rejected ステータスの場合、引数の onRejected に書いた関数が、後続の処理として呼び出されます。

エラー時の処理を行いたいときに利用します。

③rejected ステータスから catch() メソッドを実行する

rejected ステータスから、 Promise.prototype.catch() メソッドを実行できます。

Promise.prototype.catch() メソッドの呼び出しは、裏側的には Promise.prototype.then(onRejected]) が呼び出された時と同じ挙動をするみたいです。用途も基本的に同じです。

参考: https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch

参考

https://rightcode.co.jp/blog/information-technology/javascript-async-await