【问题标题】:Is there a javascript promise library that handles runtime errors?是否有处理运行时错误的 javascript 承诺库?
【发布时间】:2015-03-02 15:53:24
【问题描述】:

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

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

否则,我正在寻找其他 Promise 库或框架的建议以供探索。

【问题讨论】:

标签: parse-platform promise q bluebird


【解决方案1】:

根本不可能处理超出其控制范围的错误。 Promise 库安全的唯一原因是因为 Promise 使用返回值来吸收其他 Promise。

如果您的所有代码都返回 Promise 而不是回调,所有 A+ Promise 库(在您的示例中是 Q 和 Bluebird,但不是 Parse.promise)将捕获运行时错误,并且 bluebird 甚至会自动报告它们而无需 .catch 他们.

域已被弃用,在实践中并不能很好地工作,并且没有节点范围的解决方案。你唯一的选择就是在应用程序范围内坚持承诺。您必须在未捕获的异常上终止并重新启动服务器,因为节点代码中的某些部分在抛出这些异常后并不能很好地清理它们(这就是域开始被弃用的部分原因) .

所以:

  • 如果您在应用程序范围内使用 Promise,则 Promises 安全的运行时错误。
  • 如果您必须运行可能引发的不受信任的代码,请考虑使用 vm 模块在 VM 中运行它。
  • 有时会出现节点错误,让您别无选择,只能重新启动服务器。
  • Promisify 在可能的最低级别,以避免 Promisified 函数抛出。

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

【讨论】:

    猜你喜欢
    • 2016-03-02
    • 2020-07-01
    • 2020-08-17
    • 2021-02-08
    • 1970-01-01
    • 2021-10-02
    • 2020-04-11
    • 1970-01-01
    • 2015-07-29
    相关资源
    最近更新 更多