6

我想捕获 when.js 未处理的拒绝,以便我可以记录它们。为了实现这一点,我重写了 console.warn(),但是它可以记录除 when.js 之外的我不感兴趣的东西。

参考:https ://github.com/cujojs/when/blob/master/docs/api.md#debugging-promises

我在 when.js https://github.com/AriaMinaei/pretty-monitor中使用prettymonitor

4

1 回答 1

4

如果您在服务器端,则可以使用 promise 拒绝挂钩。这些将适用于服务器端的大多数 Promise 实现(io.js、bluebird、when 等):

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

如果您在浏览器环境中,则事情的标准化程度较低。但是,When 仍然在那里提供类似的钩子:

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);

还有本地拒绝钩子,如果您只想处理对 promise 库的单个实例的拒绝,这些钩子很好 - 这通常在您自己构建库时很有用:

var Promise = require('when').Promise;
Promise.onPotentiallyUnhandledRejection = function(rejection) {
    // handle single instance error here
};
于 2015-04-17T07:02:36.263 回答