到目前为止,我已尝试比较Parse.Promise
,Q
和Bluebird
,但我无法获得error
或catch
块处理/捕获异步运行时错误。
如果您认为上面提到的某个库可以处理/捕获异步运行时错误并怀疑我可能没有正确编写示例代码,请随时指出任何错误:https://github.com/pulkitsinghal/example-promises
否则我正在寻找其他承诺库或框架的建议。
答案 0 :(得分:3)
库根本无法处理超出其控制范围的错误。保证库安全的唯一原因是promises使用返回值来吸收其他promise。
如果你的所有代码都返回promises而不是回调,那么All A + promise库(你的例子中的Q和Bluebird,而不是Parse.promise)将捕获运行时错误,bluebird甚至会自动报告它们而不需要.catch
他们。
域名正在被弃用,并且在实践中确实不能很好地运行,并且没有节点范围的解决方案。你唯一的选择就是坚持应用范围的承诺。您必须在未捕获的异常上杀死并重新启动服务器,因为抛出这些异常的节点代码中的某些部分在它们抛出之后不会很好地清理(这是为什么要开始使用域的部分原因) 。
所以:
Here is a broader question that discusses async error-handling in NodeJS