gpt4 book ai didi

javascript - 未处理的拒绝错误 Bluebird

转载 作者:数据小太阳 更新时间:2023-10-29 06:10:03 24 4
gpt4 key购买 nike

我有以下代码。它按预期工作,没有抛出未处理的拒绝错误。

p = new Promise (fulfill, reject) ->
reject new Error 'some error'

p.catch (error) ->
console.log error

现在,第二个代码示例会抛出一个未处理的拒绝错误。当我清楚地处理错误时,有人可以向我解释为什么会发生这种情况。

p = new Promise (fulfill, reject) ->
reject new Error 'some error'

p.then ->
console.log 'ok'

p.catch (error) ->
console.log error

顺便说一句。我在 chrome 和 bluebird v3.4.7 中测试

最佳答案

根据 error management configuration如果拒绝 promise 时没有捕获处理程序注册,Bluebird 会抛出错误,而不会等待将来是否添加。请注意,检查拒绝处理程序应该与设置 promise 链的线程异步完成。正如他们所说,“某些编程模式会导致误报”。真的吗?

另一方面,未捕获的异常错误不是 ES6 标准的一部分,并且实现以不同的方式处理它们:Firefox 等待,或过去等待,直到 GC 时间,而 Chrome 超时(或过去超时) “可能未捕获的 promise 拒绝”错误。

请查阅 Blue bird 文档,了解 Bluebird promises 在附加处理程序之前发生的错误的可能解决方案。


但是由于这两个示例都同步地为 promise p 附加了一个拒绝处理程序,异常的原因似乎在别处。

感谢@DJ 的回答,但有不同的解释。在第二个示例中,then 返回一个 promise ,如果 p 被拒绝,该 promise 将被拒绝,并且没有拒绝处理程序。 .then 返回的 promise 很可能是引发错误的 promise 。

关于javascript - 未处理的拒绝错误 Bluebird,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41817407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com