Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. Promise
  6. Promise.prototype.finally()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

Promise.prototype.finally()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since октябрь 2018 г..

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

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

Синтаксис

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

Параметры

onFinally

ФункцияFunction вызываемая когда промис завершен.

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

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

Описание

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

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

  • Использованиеfinally() позволяет избежать двойного объявления одной и той же функции или создания переменной.
  • finally не получает аргументов, так как не существует способа определить, будет ли промис выполнен успешно или с ошибкой. Данный метод необходимо использовать, если не важна причина ошибки или результат успешного выполнения и, следовательно, нет необходимости её/его передавать.
  • В отличие отPromise.resolve(2).then(() => {}, () => {}) (результатом которого будет resolved-промис, со значениемundefined), результатомPromise.resolve(2).finally(() => {}) будет resolved-промис со значением2.
  • Аналогично, в отличии отPromise.reject(3).then(() => {}, () => {}) (результатом которого будет resolved-промис, со значениемundefined), результатомPromise.reject(3).finally(() => {}) будет rejected-промис со значением3.

Примечание:Athrow (or returning a rejected promise) in thefinally callback will reject the new promise with the rejection reason specified when callingthrow().

Примеры

js
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;  });

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

Specification
ECMAScript® 2026 Language Specification
# sec-promise.prototype.finally

Совместимость с браузерами

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

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2026 Movatter.jp