Spec-Zone.ru › Bluebird

Настройка управления ошибками

По умолчанию bluebird сразу же регистрирует стек вызовов при необработанном отклонении. Это похоже на то, как при необработанных исключениях регистрируется стек вызовов, чтобы у вас было что-то для работы, когда что-то не работает так, как ожидалось.

Однако, так как обработка отклоненного промиса возможна в любое время в неопределенном будущем, некоторые программистские подходы приведут к ложным срабатываниям. Поскольку такие подходы не нужны и всегда могут быть переписаны, чтобы не вызывать ложных срабатываний, мы рекомендуем это делать, чтобы отладка оставалась простой. Однако вы можете с этим не согласиться, поэтому bluebird предоставляет крючки для реализации более сложных стратегий обработки ошибок.

Такие стратегии могут включать:

  • Регистрация после того, как промис стал доступен сборщику мусора (требуется модуль native node.js)
  • Отображение списка отклоненных промисов в реальном времени
  • Не использовать крючки и использовать .done, чтобы вручную отметить конечные точки, где отклонения не будут обрабатываться
  • Игнорирование всех ошибок (проверьте свои навыки отладки)
  • ...

Глобальные события отклонения

Начиная с версии 2.7.0, все экземпляры bluebird также генерируют глобальные события отклонения, позволяющие приложениям регистрировать один универсальный обработчик для них.

Глобальные события:

  • "unhandledRejection" (соответствует локальному Promise.onPossiblyUnhandledRejection)
  • "rejectionHandled" (соответствует локальному Promise.onUnhandledRejectionHandled)

Прикрепление глобальных обработчиков событий отклонения в node.js:

// NOTE: event name is camelCase as per node convention
process.on("unhandledRejection", function(reason, promise) {
    // See Promise.onPossiblyUnhandledRejection for parameter documentation
});

// NOTE: event name is camelCase as per node convention
process.on("rejectionHandled", function(promise) {
    // See Promise.onUnhandledRejectionHandled for parameter documentation
});

Прикрепление глобальных обработчиков событий отклонения в браузерах:

Использование DOM3 addEventListener API (поддержка с IE9+):

// NOTE: event name is all lower case as per DOM convention
window.addEventListener("unhandledrejection", function(e) {
    // NOTE: e.preventDefault() must be manually called to prevent the default
    // action which is currently to log the stack trace to console.warn
    e.preventDefault();
    // NOTE: parameters are properties of the event detail property
    var reason = e.detail.reason;
    var promise = e.detail.promise;
    // See Promise.onPossiblyUnhandledRejection for parameter documentation
});

// NOTE: event name is all lower case as per DOM convention
window.addEventListener("rejectionhandled", function(e) {
    // NOTE: e.preventDefault() must be manually called prevent the default
    // action which is currently unset (but might be set to something in the future)
    e.preventDefault();
    // NOTE: parameters are properties of the event detail property
    var promise = e.detail.promise;
    // See Promise.onUnhandledRejectionHandled for parameter documentation
});

В веб-воркерах вы можете использовать self.addEventListener.

Использование устаревших API (поддержка с IE6+):

// NOTE: event name is all lower case as per legacy convention
window.onunhandledrejection = function(reason, promise) {
    // See Promise.onPossiblyUnhandledRejection for parameter documentation
};

// NOTE: event name is all lower case as per legacy convention
window.onrejectionhandled = function(promise) {
    // See Promise.onUnhandledRejectionHandled for parameter documentation
};

© 2013–2018 Petka Antonov
Licensed under the MIT License.
http://bluebirdjs.com/docs/api/error-management-configuration.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API