【Node.js24.x】Promise::then()メソッドの使い方
thenメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
thenメソッドはPromiseオブジェクトの状態が変化した際に実行されるコールバック関数を登録し、新しいPromiseを返すメソッドです。非同期処理の結果を扱ったり、複数の非同期処理を順番に実行したりする際に不可欠な機能を提供します。
このメソッドは、最大で二つの引数を取ります。一つ目の引数onFulfilledは、元のPromiseが正常に完了(resolve)した場合に実行される関数です。この関数には、Promiseが成功した際の結果値が引数として渡されます。二つ目の引数onRejectedは、元のPromiseが失敗(reject)した場合に実行される関数です。この関数には、Promiseが失敗した際のエラー情報が引数として渡されます。onRejectedを指定しない場合、エラーは次の.catch()メソッドや、Promiseチェーンの最後に伝播されます。
thenメソッドは常に新しいPromiseオブジェクトを返します。この新しいPromiseの状態は、onFulfilledまたはonRejectedコールバックの戻り値によって決まります。例えば、コールバックが通常の値を返せば、その値で新しいPromiseが解決されます。コールバックが別のPromiseを返せば、新しいPromiseはその返されたPromiseの状態に追従します。これにより、非同期処理を連鎖的に、かつ読みやすい形で記述できるPromiseチェイニングが実現されます。エラーハンドリングも効果的に行えるため、複雑な非同期処理を整理する上で非常に重要な役割を担っています。
構文(syntax)
1const myPromise = new Promise((resolve, reject) => { 2 // ここに非同期処理を記述します。 3 // 例として、成功するケースを記述します。 4 setTimeout(() => { 5 resolve("データが正常に取得されました。"); 6 // 失敗するケースの場合: 7 // reject(new Error("データの取得に失敗しました。")); 8 }, 1000); 9}); 10 11myPromise.then( 12 (value) => { 13 // Promise が成功 (fulfilled) したときに実行される関数 14 // value には resolve() で渡された値が入ります。 15 console.log("成功時の処理:", value); 16 }, 17 (reason) => { 18 // Promise が失敗 (rejected) したときに実行される関数 19 // reason には reject() で渡された値(通常はErrorオブジェクト)が入ります。 20 console.error("失敗時の処理:", reason.message); 21 } 22);
引数(parameters)
onFulfilled, onRejected
- onFulfilled: Promiseが成功した場合に実行されるコールバック関数
- onRejected: Promiseが失敗した場合に実行されるコールバック関数
戻り値(return)
Promise
Promiseオブジェクトを返します。これは、現在のPromiseの完了後に実行されるコールバック関数を登録するためのものです。