From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../global_objects/promise/finally/index.html | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 files/ru/web/javascript/reference/global_objects/promise/finally/index.html (limited to 'files/ru/web/javascript/reference/global_objects/promise/finally') diff --git a/files/ru/web/javascript/reference/global_objects/promise/finally/index.html b/files/ru/web/javascript/reference/global_objects/promise/finally/index.html new file mode 100644 index 0000000000..5b4391ce47 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/finally/index.html @@ -0,0 +1,98 @@ +--- +title: Promise.prototype.finally() +slug: Web/JavaScript/Reference/Global_Objects/Promise/finally +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/finally +--- +
{{JSRef}}
+ +

Метод finally() возвращает {{jsxref("Promise")}}. Когда Promise (обещание) был выполнен, в не зависимости успешно или с ошибкой, указанная функция будет выполнена. Это дает возможность запустить один раз определенный участок кода, который должен выполниться вне зависимости от того, с каким результатом выполнился Promise.

+ +

Это позволяет вам избавиться от дубликации кода в обработчиках {{jsxref("Promise.then", "then()")}} и {{jsxref("Promise.catch", "catch()")}}.

+ +

Синтаксис

+ +
p.finally(onFinally);
+
+p.finally(function() {
+   // завершен (успешно или с ошибкой)
+});
+
+p.finally(() => {
+// завершен (успешно или с ошибкой)
+});
+ +

Параметры

+ +
+
onFinally
+
Функция {{jsxref("Function")}} вызываемая когда Promise (обещание) завершено.
+
+ +

Возвращаемое значение

+ +

Возвращает {{jsxref("Promise")}} для которого в качестве обработчика finally задана функция onFinally.

+ +

Описание

+ +

finally() может быть полезен, если необходимо приоизвести какие-либо вычисления или очистку, как только Promise (обещание) завершено, вне зависимости от результата.

+ +

finally() очень схож с вызовом .then(onFinally, onFinally), однако существует несколько различий:

+ + + +
+

Note: A throw (or returning a rejected promise) in the finally callback will reject the new promise with the rejection reason specified when calling throw().

+
+ +

Примеры

+ +
let isLoading = true;
+
+fetch(myRequest).then(function(response) {
+    var contentType = response.headers.get("content-type");
+    if(contentType && contentType.includes("application/json")) {
+      return response.json();
+    }
+    throw new TypeError("Oops, we haven't got JSON!");
+  })
+  .then(function(json) { /* process your JSON further */ })
+  .catch(function(error) { console.log(error); })
+  .finally(function() { isLoading = false; });
+
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
SpecificationStatusComment
TC39 proposalStage 4
+ +

Браузерная совместимость

+ + + +

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

+ +

Смотрите также

+ + -- cgit v1.2.3-54-g00ecf