🤔
Node.js のPromiseを学んでみる
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