trap when.js необработанные отклонения

Я хотел бы поймать, когда.js необработанные отклонения, чтобы я мог их регистрировать. Чтобы добиться этого, я переопределил console.warn(), однако он может регистрировать вещи, отличные от when.js, которые мне не интересны.

ссылка: https://github.com/cujojs/when/blob/master/docs/api.md#debugging-promises

Я использую prettymonitor с when.js https://github.com/AriaMinaei/pretty-monitor

1 ответ

Решение

Если вы находитесь на стороне сервера, вы можете использовать зацепки отклонения обещания. Они будут работать в большинстве реализаций обещаний на стороне сервера (io.js, bluebird, когда и т. Д.):

 process.on("unhandledRejection", function(promise, reason){
    // deal with the rejection here.
 });

Если вы находитесь в среде браузера, то все менее стандартизировано. Тем не менее, когда все еще предоставляет аналогичные хуки там:

window.addEventListener('unhandledRejection', function(event) {
    event.preventDefault(); // This stops the initial log.
    // handle event
    event.detail.reason; // rejection reason
    event.detail.key; // rejection promise key
}, false);

Существуют также локальные ловушки отклонения, они хороши, если вы хотите обрабатывать отклонения только одного экземпляра библиотеки обещаний - это обычно полезно при создании библиотеки самостоятельно:

var Promise = require('when').Promise;
Promise.onPotentiallyUnhandledRejection = function(rejection) {
    // handle single instance error here
};
Другие вопросы по тегам