我无法理解bluebird何时会记录未处理的拒绝而不是丢弃它。我想这与文档称之为“第二轮”的内容有关,但我不清楚这意味着什么。
Promise.reject(new Error("oops"))
- >没有记录
Promise.reject(new Error("oops")).then(function() {})
- >记录堆栈跟踪
Promise.method(function() { throw new Error("oops"); })()
- >没有记录
Promise.method(function() { throw new Error("oops"); })().then(function() {})
- >记录堆栈跟踪
Promise.promisify(function(k) { k(new Error("oops"), null); })()
- >记录堆栈跟踪
我正在将一些代码转换为蓝鸟承诺,而且我在整个地方都遭到了拒绝。 (好吧,首先它是#100,我是个白痴。)我想我会使用.promisify而不是.method来克服目前无声的失败,但我很害怕可能还有其他情况我会错过抛出的错误。
答案 0 :(得分:2)
如果有未处理的拒绝,则应记录未处理的拒绝,因此1和3是错误,因为您没有任何处理程序来处理“第二轮开始”注册的拒绝。