请问一下在Promise,如果reject不catch会怎样

发布于 2022-09-12 03:44:47 字数 82 浏览 17 评论 0

就是如果有返回promise的方法,是不是每次调用都要写一个catch去捕获reject,不写的话,当await Method()时会不会一直堵塞住啊

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

粉红×色少女 2022-09-19 03:44:47

任何一个await语句后面的 Promise 对象变为reject状态,那么整个async函数都会中断执行。如果不catch, async函数直接抛出reject了, async里在await后面的代码是不会执行的。
一般写catch有以下几种方法(推荐使用第一种方法):
1 将await代码写在try catch代码块中, 这样当await抛出异常时直接被catch捕获,不会影响下面代码的运行。

async function f() {
  try {
    await Promise.reject('出错了');
  } catch(e) {
  }
  return await Promise.resolve('hello world');
}

f()
.then(v => console.log(v))

2 另一种方法是await后面的 Promise 对象再跟一个catch方法,处理前面可能出现的错误。

async function f() {
  await Promise.reject('出错了')
    .catch(e => console.log(e));
  return await Promise.resolve('hello world');
}

f()
.then(v => console.log(v))
// 出错了
// hello world
被你宠の有点坏 2022-09-19 03:44:47

不 catch 又 reject 的时候会报错 Uncaught

image.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文