Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】Promise::Promise.prototype.finallyインスタンスメソッドの使い方

Promise.prototype.finally()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Promise.prototype.finally()メソッドは、Promiseが解決(成功)または拒否(失敗)のどちらの結果になったとしても、必ず実行される処理を登録するために使用するメソッドです。

このメソッドは、Promiseチェーンの処理が完了した後に、結果が成功か失敗かに関わらず、特定のクリーンアップ処理や後処理を実行したい場合に特に有効です。例えば、データの読み込み中に表示していたローディングアイコンを非表示にする、一時的に開いたファイルやネットワーク接続を閉じる、といったリソースの解放処理に活用できます。

finally()メソッドに渡すコールバック関数は、Promiseの解決値や拒否理由にアクセスすることなく実行されます。つまり、このコールバック関数には引数が渡されません。

finally()メソッド自体は新しいPromiseオブジェクトを返します。この新しいPromiseは、finallyのコールバック関数が完了した後に、元のPromiseの最終的な状態(解決または拒否)と値または理由を元のPromiseから引き継ぎます。これにより、Promiseの結果に関わらず一貫した後処理を記述しつつ、Promiseチェーンの流れをスムーズに継続できます。

公式リファレンス: Promise.prototype.finally()

構文(syntax)

1const myPromise = new Promise((resolve, reject) => {
2  // 例えば、非同期処理が失敗した場合
3  reject(new Error('データ取得に失敗しました。'));
4});
5
6myPromise
7  .then(data => {
8    console.log('成功時の処理:', data);
9  })
10  .catch(error => {
11    console.error('失敗時の処理:', error.message);
12  })
13  .finally(() => {
14    console.log('Promiseの処理が完了しました。成功・失敗に関わらず実行されます。');
15  });

引数(parameters)

onFinally

  • onFinally: function: Promiseが完了した(解決されたか拒否されたかに関わらず)ときに呼び出されるコールバック関数。この関数は引数を取りません。

戻り値(return)

Promise

Promise.prototype.finally()は、Promiseの状態が確定した(fulfilledまたはrejectedになった)際に、常に実行されるコールバック関数を登録した新しいPromiseを返します。この新しいPromiseは、元のPromiseの状態を引き継ぎます。

関連コンテンツ