🤔

Node.js のPromiseを学んでみる

2022/05/05に公開

Async/Awaitは可読性も高く習得しやすかったけど、Promiseを避けてたのでちゃんと理解するために学びなおししてみました。

Promise

非同期処理を定義する際に宣言します。
これにより、非同期メソッドは結果の値を返す代わりに、未来のある時点で値を提供するプロミスを返すことで、同期メソッドと同じように値を返すことができるようになります。

Promiseの状態

Promiseでは、現在の処理状況を「3つ状態」で表すことができます。

  • 待機 (pending): 初期状態。成功も失敗もしていません。
  • 履行 (fulfilled): 処理が成功して完了したことを意味します。
  • 拒否 (rejected): 処理が失敗したことを意味します。
    「pending」から「fulfilledもしくはreject」に進無用になっています。個々の細かい処理の定義をする必要があります。

    https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise より

Promiseのメソッド

promise.then()

thenは、promiseが成功/失敗になるまで処理を受け流します。
最大2つの引数を取ります。1番目の引数は、プロミスが解決した場合のコールバック関数。
2番目の引数は、拒否された場合のコールバック関数です。

promise成功時に1番目の引数を、失敗時に2番目の引数をコールバック関数として呼び出します。

それぞれの .then() は新たに生成されたプロミスオブジェクトを返します。
このオブジェクトは、オプションで連鎖に使用することができます。例えば、このようになります。

promise.catch()

エラー処理を記述します。
promise.thenで成功時の引数を定義し、promise.catchで失敗時の処理内容を定義することで.thenが複数出現した際の失敗処理の重複を避ける事ができます。

Discussion