JavaScript Promise.finally() — код, що виконається завжди


Метод finally() (у перекладі — зрештою) виконується в будь-якому разі — і при успіху, і при помилці.

автор: NagarD

Загальний опис

Це місце для прибирання: сховати індикатор завантаження, розблокувати кнопку, закрити з'єднання. Те, що має статися незалежно від результату.

Обробник finally() не отримує аргументів — і це навмисно: він не має знати, чим усе скінчилось, бо його справа не результат, а прибирання.

Він також прозорий для ланцюжка: результат (чи помилка) пролітає крізь нього далі без змін. Повернути з finally() щось інше не вийде.

автор: NagarD

Порада

У async/await те саме роблять блоком finally у try...catch — і читається воно навіть простіше.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
finally 63+ 58+ 11.1+ 50+ 18+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
finally 63+ yes yes 11.3+

Приклади

+ запропонувати свій приклад у пісочниці

Індикатор завантаження, що зникає в будь-якому разі.

const spinner = {
    hidden: 'значення'
};

const button = {
    disabled: 'значення'
};

button.disabled = true;
spinner.hidden = false;

fetch('/api/save', { method: 'POST' })
    .then(response => response.json())
    .then(result => console.log('Збережено', result))
    .catch(error => console.error('Помилка', error))
    .finally(() => {
        // виконається і при успіху, і при збої
        button.disabled = false;
        spinner.hidden = true;
    });
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід