WorkerGlobalScope: событие unhandledrejection
Примечание: Эта функция доступна только в Веб-воркерах.
Событие unhandledrejection отправляется в глобальную область видимости (обычно WorkerGlobalScope) скрипта, когда Promise, у которого нет обработчика отклонения, отклоняется.
Это полезно для отладки и для предоставления обработки ошибок по умолчанию для непредвиденных ситуаций.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или задайте свойство обработчика событий.
self.addEventListener("unhandledrejection", (event) => {});
self.onunhandledrejection = (event) => {};
Тип события
A PromiseRejectionEvent. Наследуется от Event.
Свойства события
-
PromiseRejectionEvent.promiseТолько для чтения -
JavaScript
Promise, который был отклонен. -
PromiseRejectionEvent.reasonТолько для чтения -
Значение или
Object, указывающее, почему обещание было отклонено, как передано вPromise.reject().
Примеры
Базовая регистрация ошибок
В этом примере информация об отклонении обещания без обработки выводится в консоль.
self.addEventListener("unhandledrejection", (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
});
Также можно использовать свойство обработчика событий onunhandledrejection для настройки обработчика событий:
self.onunhandledrejection = (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
Предотвращение обработки по умолчанию
Многие среды (например, Node.js) по умолчанию сообщают об отклонениях необработанных обещаний в консоль. Можно предотвратить это, добавив обработчик для событий unhandledrejection, который — помимо других задач, которые вы хотите выполнить — вызывает preventDefault() для отмены события, предотвращая его распространение для обработки кодом регистрации среды выполнения. Это работает, потому что unhandledrejection является отменяемым.
self.addEventListener("unhandledrejection", (event) => {
// code for handling the unhandled rejection
// …
// Prevent the default handling (such as outputting the
// error to the console)
event.preventDefault();
});
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
unhandledrejection_event |
49 | 79 | 69 | 36 | 11 | 49 | 79 | 36 | 11 | 5.0 | 49 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/unhandledrejection_event