--- title: Promise.prototype.finally() slug: Web/JavaScript/Reference/Global_Objects/Promise/finally tags: - JavaScript - Promise - finally - метод translation_of: Web/JavaScript/Reference/Global_Objects/Promise/finally ---
{{JSRef}}

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

Це допомагає уникати дублювання коду у обробниках проміса {{jsxref("Promise.then", "then()")}} та {{jsxref("Promise.catch", "catch()")}}.

Синтаксис

p.finally(onFinally);

p.finally(function() {
   // встановлений (виконаний або відхилений)
});

Параметри

onFinally
{{jsxref("Function", "Функція")}}, що викликається, коли Promise встановлений.

Значення, що повертається

Вертає {{jsxref("Promise","проміс")}}, чиєму обробнику finally присвоєна вказана функція onFinally.

Опис

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

Метод finally() дуже схожий на виклик .then(onFinally, onFinally), але є пара відмінностей:

Заувага: throw (або повернення відхиленого проміса) у зворотному виклику finally відхилить новий проміс з причиною відхилення, вказаною у виклику 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("От халепа, немає JSON!");
  })
  .then(function(json) { /* обробити JSON далі */ })
  .catch(function(error) { console.error(error); /* цей рядок може викинути помилку, наприклад, якщо console = {} */ })
  .finally(function() { isLoading = false; });

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

Специфікація
{{SpecName('ESDraft', '#sec-promise.prototype.finally', 'Promise.prototype.finally')}}

Сумісність з веб-переглядачами

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

Див. також