不希望承诺吞下错误

时间:2015-09-06 12:43:23

标签: javascript node.js promise ecmascript-6

我正在将一些代码从bluebird转换为本机Promises,而且即使没有定义.catch(),本机承诺也会吞下错误,这让我感到非常恼火。它会使调试不可能除非你在每个承诺上放置catch()

所以我的问题 - 有人有解决方案吗?可能性包括告诉承诺投掷的某种方式,或全球捕捉它们的方式,或......?

1 个答案:

答案 0 :(得分:3)

我写了并且Petka(蓝鸟的作者)实现了(我们有帮助:)这个功能为Node稍微回来了。我不认为你应该从bluebird切换(它更快,并且有更丰富的API),但如果你想 - 请使用拒绝钩子:

process.on('unhandledRejection', function(p, reason) {
    // handle error here, all "swallowed" errors get here
});

这需要io.js 1.4+或现代NodeJS(3.0+),这不会在节点0.12中工作,所以最好使用现代版本或继续使用bluebird(它也与此事件兼容)< / p>