bluebird什么时候记录未经处理的拒绝?

时间:2014-02-16 08:56:51

标签: promise bluebird

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

1 个答案:

答案 0 :(得分:2)

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