JavaScript Promise.then() — обробка результату обіцянки
Метод then() (у перекладі — тоді) виконує функцію, коли обіцянка виконалась, і передає їй результат.
Загальний опис
Найважливіше про then() — він повертає нову обіцянку. Саме тому виклики шикуються в ланцюжок: те, що повернув один обробник, приходить у наступний.
Якщо обробник повертає звичайне значення — воно й прилетить далі. Якщо повертає обіцянку — ланцюжок дочекається її й передасть уже розгорнутий результат. Це те, що рятує від вкладених then усередині then.
Другий аргумент then() ловить помилку, але так майже не пишуть: catch() у кінці ланцюжка читабельніший і ловить помилки з усіх ланок, а не лише з попередньої.
- Нотатка
-
Обробник виконується асинхронно — навіть якщо обіцянка вже виконана. Код після
автор: NagarD.then()відпрацює раніше за код усередині нього.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| then | 32+ | 29+ | 8+ | 19+ | 12+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| then | 32+ | yes | yes | 8+ |
Приклади
+ запропонувати свій приклад у пісочниці
Ланцюжок: повернув обіцянку — наступний обробник чекає на неї.
fetch('/api/user')
.then(response => response.json()) // повернули обіцянку — чекаємо
.then(user => user.name.toUpperCase()) // повернули значення — летить далі
.then(name => console.log(name))
.catch(error => console.error(error));
// then асинхронний навіть на готовій обіцянці
Promise.resolve(1).then(() => console.log('другий'));
console.log('перший');
Коментарі
Коментарів ще немає — будьте першим!