是否有一个javascript promise库来处理运行时错误?

时间:2015-01-05 05:36:16

标签: parse-platform promise q bluebird

到目前为止,我已尝试比较Parse.PromiseQBluebird,但我无法获得errorcatch块处理/捕获异步运行时错误。

如果您认为上面提到的某个库可以处理/捕获异步运行时错误并怀疑我可能没有正确编写示例代码,请随时指出任何错误:https://github.com/pulkitsinghal/example-promises

否则我正在寻找其他承诺库或框架的建议。

1 个答案:

答案 0 :(得分:3)

根本无法处理超出其控制范围的错误。保证库安全的唯一原因是promises使用返回值来吸收其他promise。

如果你的所有代码都返回promises而不是回调,那么All A + promise库(你的例子中的Q和Bluebird,而不是Parse.promise)将捕获运行时错误,bluebird甚至会自动报告它们而不需要.catch他们。

域名正在被弃用,并且在实践中确实不能很好地运行,并且没有节点范围的解决方案。你唯一的选择就是坚持应用范围的承诺。您必须在未捕获的异常上杀死并重新启动服务器,因为抛出这些异常的节点代码中的某些部分在它们抛出之后不会很好地清理(这是为什么要开始使用域的部分原因) 。

所以:

  • 如果你在app app范围内使用promises,则 为运行时错误提供安全保护。
  • 如果必须运行不受信任的代码,可能会考虑使用vm模块在VM中运行它。
  • 有时存在节点错误,除了重新启动服务器之外别无选择。
  • 可能的最低级别进行宣传,以避免投放任何功能。

Here is a broader question that discusses async error-handling in NodeJS