在什么情况下蓝鸟的“可能未处理的错误”警告可能是错误的?

时间:2014-07-01 22:55:06

标签: javascript bluebird

这个词"可能"建议在某些情况下,即使您自己发现错误,也可以在控制台中收到此警告。

那是什么情况?

1 个答案:

答案 0 :(得分:9)

这很好explained in the docs

  

未经处理的拒绝/例外确实没有得到很好的同意   异步通信。问题是,这是不可能的   预测未来,并知道被拒绝的承诺最终是否会成功   处理。

     

蓝鸟用来解决这个问题的方法,就是打电话给   注册处理程序,如果拒绝未通过a的开头处理   第二回合。默认处理程序是将堆栈跟踪写入   浏览器中的stderrconsole.error。这接近发生的事情   使用同步代码 - 您的代码无法按预期工作   打开控制台并查看堆栈跟踪。好的。

     

当然,如果您的代码出于某种原因需要,这并不完美   在承诺之后猛扑并将错误处理程序附加到某些承诺   已经闲逛了一段时间,你会看到烦人的消息。

因此,例如,这可能会警告未处理的错误,即使它会得到很好的处理:

var prom = Promise.reject("error");
setTimeout(function() {
    prom.catch(function(err) {
        console.log(err, "got handled");
    });
}, 500);