From 7142800fc17b0c9693bbcf4813c78cbabb3425cc Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 23 Jan 2022 21:25:33 +0900 Subject: 2022/01/23 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global_objects/promise/finally/index.md | 111 +++++++++------------ 1 file changed, 46 insertions(+), 65 deletions(-) diff --git a/files/ja/web/javascript/reference/global_objects/promise/finally/index.md b/files/ja/web/javascript/reference/global_objects/promise/finally/index.md index 95b67a40d4..b3d2ea4eff 100644 --- a/files/ja/web/javascript/reference/global_objects/promise/finally/index.md +++ b/files/ja/web/javascript/reference/global_objects/promise/finally/index.md @@ -3,68 +3,66 @@ title: Promise.prototype.finally() slug: Web/JavaScript/Reference/Global_Objects/Promise/finally tags: - JavaScript - - Method - - Promises - - Prototype - - Reference + - メソッド + - Promise + - プロトタイプ + - リファレンス - finally + - ポリフィル +browser-compat: javascript.builtins.Promise.finally translation_of: Web/JavaScript/Reference/Global_Objects/Promise/finally --- -
{{JSRef}}
+{{JSRef}} -

finally() メソッドは {{jsxref("Promise")}} を返します。プロミスが確立したら、満足か拒否かにかかわらず、指定されたコールバック関数が実行されます。これにより、プロミスが成功裏に実行されたか否かに関わりなく、 Promise が処理された後に実行されなければならないコードを提供できます。

+**`finally()`** メソッドは {{jsxref("Promise")}} を返します。プロミスが確立したら、満足か拒否かにかかわらず、指定されたコールバック関数が実行されます。これにより、プロミスが成功裏に実行されたか否かに関わりなく、 `Promise` が処理された後に実行されなければならないコードを提供できます。 -

これによって、プロミスの {{jsxref("Promise.then", "then()")}} ハンドラーと {{jsxref("Promise.catch", "catch()")}} ハンドラーでコードが重複することを避けることができます。

+これによって、プロミスの {{jsxref("Promise.then", "then()")}} ハンドラーと {{jsxref("Promise.catch", "catch()")}} ハンドラーでコードが重複することを避けることができます。 -

構文

+{{EmbedInteractiveExample("pages/js/promise-finally.html", "taller")}} -
p.finally(onFinally);
+## 構文
 
-p.finally(function() {
-   // 確立 (満足または拒否)
+```js
+p.finally(onFinally);
+
+p.finally(function() {
+   // 決定 (履行または拒否)
 });
-
+``` + +### 引数 -

引数

+- `onFinally` + - : `Promise` が決定したら呼び出される関数 ({{jsxref("Function")}}) です。 -
-
onFinally
-
Promise が確立したら呼び出される {{jsxref("Function")}}。
-
+### 返値 -

返値

+`finally` ハンドラーに指定した `onFinally` が設定された {{jsxref("Promise")}} を返します。 -

finally ハンドラーに指定した onFinally が設定した {{jsxref("Promise")}} を返します。

+## 解説 -

解説

+プロミスが決定した後、結果に関わらず何らかの処理や後始末を行いたいなら、`finally()` メソッドは役立ちます。 -

プロミスが確立した後、結果に関わらず何らかの処理や後始末を行いたいなら、finally() メソッドは役立ちます。

+`finally()` メソッドは `.then(onFinally, onFinally)` の呼び出しとよく似ていますが、いくつかの点が異なります。 -

finally() メソッドは .then(onFinally, onFinally) の呼び出しとよく似ていますが、いくつかの点が異なります。

+- 関数をインラインで作成する場合、関数を 2 度宣言するか、変数を作成するかのどちらかで、一度に渡すことができます。 +- プロミスが履行されたか拒否されたかを知る術がないため、`finally` コールバックは一切引数を受け取りません。この用途では、拒否された理由や履行された値などを提供する必要がなく、それらを気にしないときに適しています。 - + - `Promise.resolve(2).then(() => {}, () => {})` (`undefined` で解決される) と異なり、`Promise.resolve(2).finally(() => {})` は `2` で解決されます。 + - 同様に、`Promise.reject(3).then(() => {}, () => {})` (`undefined` で解決される) と異なり、`Promise.reject(3).finally(() => {})` は `3` で拒否されます。 -
-

補足: finally コールバック内で throw が行われた場合 (または、拒否されたプロミスを返した場合)、 throw を呼び出すときに指定された拒否理由と共に新しいプロミスが拒否されます。

-
+> **Note:** `finally` コールバック内で `throw` が行われた場合 (または、拒否されたプロミスを返した場合)、 `throw` を呼び出すときに指定された拒否理由と共に新しいプロミスが拒否されます。 -

+## 例 -

finally の使用

+### finally の使用 -
let isLoading = true;
+```js
+let isLoading = true;
 
 fetch(myRequest).then(function(response) {
     var contentType = response.headers.get("content-type");
-    if(contentType && contentType.includes("application/json")) {
+    if(contentType && contentType.includes("application/json")) {
       return response.json();
     }
     throw new TypeError("Oops, we haven't got JSON!");
@@ -72,36 +70,19 @@ fetch(myRequest).then(function(response) {
   .then(function(json) { /* process your JSON further */ })
   .catch(function(error) { console.error(error); /* this line can also throw, e.g. when console = {} */ })
   .finally(function() { isLoading = false; });
+```
 
-
- - - -

仕様書

+## 仕様書 - - - - - - - - - - - -
仕様書
{{SpecName('ESDraft', '#sec-promise.prototype.finally', 'Promise.prototype.finally')}}
+{{Specifications}} -

ブラウザーの互換性

+## ブラウザーの互換性 -

{{Compat("javascript.builtins.Promise.finally")}}

+{{Compat}} -

関連情報

+## 関連情報 - +- `Promise.prototype.finally` のポリフィルは [`core-js`](https://github.com/zloirock/core-js#ecmascript-promise) で利用できます +- {{jsxref("Promise")}} +- {{jsxref("Promise.prototype.then()")}} +- {{jsxref("Promise.prototype.catch()")}} -- cgit v1.2.3-54-g00ecf