什么是"false positive"拒绝的承诺?可能无法处理拒绝?



im使用节点中的bluebird Promise库。

我的代码中有一个部分,可以抓住拒绝的承诺,而不会重新兑现。

"未经拒绝"之后仍然触发了同样的诺言 - 为什么在处理时会这样?

什么是"可能的否决"?

http://bluebirdjs.com/docs/api/error-management-configuration.html

但是,可以在任何 不确定的未来的时间,某些编程模式将 导致误报。因为这样的编程模式不是 必要和总是可以重构以永远不会导致误报, 我们建议这样做以使调试尽可能轻松。

这里提到的"编程模式"是什么?

这与这种模式有关(一个被拒绝的承诺被束缚了两次或更多,其中一个不会抓住):https://github.com/petkaantonov/bluebird/issues/695#issuecomment-1555373565

谢谢

上述编程实践涉及仅在发生错误后安装错误处理程序。例如,以

var a = Promise.delay(Math.random()*1000)
        .then(function(){ throw new Error(); });
var b = Promise.delay(Math.random()*1000)
        .then(function() { return a; })
        .catch(function() { console.log("It's ok."); });

在大约一半的情况下,a的延迟比b的延迟短,我们会得到unhandledRejection警告。

这与一个被拒绝的承诺被束缚两次或更多的模式有关,其中一个不会捕获?

不,这只是一个错误。所有分支都需要具有错误处理程序。

最新更新