JavaScript Promise.finally() — код, що виконається завжди
Метод finally() (у перекладі — зрештою) виконується в будь-якому разі — і при успіху, і при помилці.
Загальний опис
Це місце для прибирання: сховати індикатор завантаження, розблокувати кнопку, закрити з'єднання. Те, що має статися незалежно від результату.
Обробник finally() не отримує аргументів — і це навмисно: він не має знати, чим усе скінчилось, бо його справа не результат, а прибирання.
Він також прозорий для ланцюжка: результат (чи помилка) пролітає крізь нього далі без змін. Повернути з finally() щось інше не вийде.
- Порада
-
У
автор: NagarDasync/awaitте саме роблять блокомfinallyуtry...catch— і читається воно навіть простіше.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| finally | 63+ | 58+ | 11.1+ | 50+ | 18+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| 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;
});
Коментарі
Коментарів ще немає — будьте першим!