JavaScript Promise.reject() — готова відхилена обіцянка
Promise.reject() створює обіцянку, яка вже відхилена з переданою помилкою.
Загальний опис
Потрібен там, де треба вийти з помилкою до початку асинхронної роботи: аргумент некоректний, і робити запит немає сенсу.
Передавати туди варто саме об'єкт Error, а не рядок: тільки в помилки є стек викликів, без якого шукати причину доведеться наосліп.
В async-функції те саме робить звичайний throw — і читається краще.
- Нотатка
-
Відхилена обіцянка без обробника дає в консолі «unhandled rejection». Створив
автор: NagarDreject()— подбай, щоб десь бувcatch.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| reject | 32+ | 29+ | 8+ | 19+ | 12+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| reject | 32+ | yes | yes | 8+ |
Приклади
+ запропонувати свій приклад у пісочниці
Ранній вихід із помилкою, доки запит ще не пішов.
function loadUser(id) {
if (!Number.isInteger(id)) {
// не робимо запит узагалі
return Promise.reject(new TypeError('id має бути цілим числом'));
}
return fetch('/api/users/' + id).then(r => r.json());
}
loadUser('абв').catch(error => console.error(error.message));
// в async-функції те саме простіше:
// if (!Number.isInteger(id)) throw new TypeError('...');
Коментарі
Коментарів ще немає — будьте першим!