1

我无法理解蓝鸟何时会记录未处理的拒绝而不是丢弃它。我想这与文档中所说的“第二回合”有关,但我不清楚这意味着什么。

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 来克服我目前的无声失败,但我害怕可能会有其他情况我会错过抛出的错误。

4

1 回答 1

2

每当有未处理的拒绝时,都应记录未处理的拒绝,因此 1 和 3 是错误,因为您没有任何处理程序来处理“第二轮开始”时注册的拒绝。

于 2014-02-17T10:28:43.977 回答