Глобальный необработанный обработчик отклонений - PullRequest
0 голосов
/ 13 сентября 2018

Я использую https://github.com/rtsao/browser-unhandled-rejection для глобальных необработанных отклонений.

Вот как регистрируется обработчик:

window.addEventListener('unhandledrejection', (params) => {

});

Я не уверен, как мне справиться с обещанием в этом callback? Все работает правильно, и этот обработчик вызывается каждый раз, когда promise терпит неудачу, а catch не реализуется, поэтому я получаю 'Uncaught (in promise)'.

Есть ли способ обработать невыполненное обещание внутри unhandledrejection, чтобы он не выдавал ошибку 'Uncaught (in promise)', а код, в котором ошибка promise продолжалась нормально, как если бы был реализован catch? В аргументе params у меня есть доступ к отклоненному promise, но я не уверен, как мне справиться с этим или это вообще возможно?

1 Ответ

0 голосов
/ 13 сентября 2018

Согласно спецификации событие отменяется, поэтому вы можете добавить

params.preventDefault(); // Note: `params` here is more idiomatically called `event`

в обработчик, чтобы предотвратить действие по умолчанию.(Это предотвращает предупреждение «Необработанное отклонение» в Chrome, которое реализует это без этого полифилла.)

Пример без preventDefault:

window.addEventListener("unhandledrejection", event => {
    console.log("Got the unhandledrejection event");
});
Promise.reject();
Look in the real browser console.

Пример с preventDefault:

window.addEventListener("unhandledrejection", event => {
    console.log("Got the unhandledrejection event");
    event.preventDefault();
});
Promise.reject();
Look in the real browser console.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...