javascript - 如何确定哪个 promise 抛出错误(在 promise 链中)

标签 javascript node.js ecmascript-6

我如何确定三个 promise 中的哪一个导致了错误?

下面的代码是伪代码,但在我的实际代码中,我正在使用第三方库(Stripe 和 Firebase),因此我无法修改实际的 Promises 本身。

我想我可以检查 catch 中的 error 参数是否包含特定值(例如,在 Stripe 中有一个非常详细的错误对象),但肯定一定会有更好的办法。

return async.func.one.doIt()
  .then(() => {
    return async.func.two.doIt();
  })
  .then(() => {
    return async.func.three.doIt();
  })
  .then(() => {
    return { success: true };
  })
  .catch((error) => {
    // How do I know which 'then' caused
    // the catch to invoke?
  });

最佳答案

您可以在每个“.then”方法之间放置“.catch”以捕获错误。它应该捕获之前任何 promise 抛出的最接近的错误,直到下一个“.catch”方法。

关于javascript - 如何确定哪个 promise 抛出错误(在 promise 链中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53085611/

相关文章:

mysql - 使用 Node.js 搜索 PDF 文本并返回片段

node.js - 一个文件中的多个运行者仅产生第一个运行者的结果

javascript - 请解释一下这个 ECMASCRIPT 代码和语法

javascript - 无法读取 null 的属性(读取 'name' )

node.js - 如何从流、文件或 base64 字符串在 Node (服务器端)中创建 blob?

Javascript promise 序列

javascript - 使用 ES6 模块的 CreateJS

javascript - [webpack2]样式未加载(.css/.less)

javascript - 如何使用 Google Places 获取一组地名?

javascript - 使用javascript在 "OK"警报弹出后刷新页面