JavaScript Promise.reject() — готова відхилена обіцянка


Promise.reject() створює обіцянку, яка вже відхилена з переданою помилкою.

автор: NagarD

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

Потрібен там, де треба вийти з помилкою до початку асинхронної роботи: аргумент некоректний, і робити запит немає сенсу.

Передавати туди варто саме об'єкт Error, а не рядок: тільки в помилки є стек викликів, без якого шукати причину доведеться наосліп.

В async-функції те саме робить звичайний throw — і читається краще.

автор: NagarD

Нотатка

Відхилена обіцянка без обробника дає в консолі «unhandled rejection». Створив reject() — подбай, щоб десь був catch.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
reject 32+ 29+ 8+ 19+ 12+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
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('...');
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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