相关疑难解决方法(0)

不能从异步承诺执行程序函数中抛出错误

我一直试图理解为什么下面的代码没有抓住它throw.如果asyncnew Promise(async (resolve, ...部件中删除关键字,那么它可以正常工作,因此它与Promise执行程序是异步函数的事实有关.

(async function() {

  try {
    await fn();
  } catch(e) {
    console.log("CAUGHT fn error -->",e)
  }

})();

function fn() {

  return new Promise(async (resolve, reject) => {
    // ...
    throw new Error("<<fn error>>");
    // ...
  });

}
Run Code Online (Sandbox Code Playgroud)

这里的答案,这里这里重复一遍"如果你在任何其他异步回调中,你必须使用reject",但是"异步"它们并不是指async函数,所以我认为它们的解释不适用于此(如果他们这样做,我不明白如何).

如果不是throw我们使用reject,上面的代码工作正常.从根本上说,我想明白为什么throw不在这里工作.谢谢!

javascript node.js promise async-await

4
推荐指数
2
解决办法
1916
查看次数

标签 统计

async-await ×1

javascript ×1

node.js ×1

promise ×1