JavaScript Promise.reject() — готова відхилена обіцянка
Promise.reject() створює обіцянку, яка вже відхилена з переданою помилкою.
Загальний опис
Потрібен там, де треба вийти з помилкою до початку асинхронної роботи: аргумент некоректний, і робити запит немає сенсу.
Передавати туди варто саме об'єкт Error, а не рядок: тільки в помилки є стек викликів, без якого шукати причину доведеться наосліп.
В async-функції те саме робить звичайний throw — і читається краще.
- Нотатка
-
Відхилена обіцянка без обробника дає в консолі «unhandled rejection». Створив
автор: NagarDreject()— подбай, щоб десь бувcatch.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 32 | 29 | 8 | 19 | 12 | — |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4.3 | 32 | 29 | 8 |
| Переглядач | ||
|---|---|---|
| 0.12.0 | 1.0 |
Приклади
+ запропонувати свій приклад у пісочниці
Ранній вихід із помилкою, доки запит ще не пішов.
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('...');
Коментарі
Коментарів ще немає — будьте першим!