await怎么获取 reject的值呢?

var r = await ProFn() // ProFn是一个返回Promise对象的函数

它返回的是原本应该传给resolve函数的值,

那怎么获取原本应该传给reject函数的值呢?

阅读 15.5k
5 个回答

var response = await promisedFunction().catch((err) => { console.log(err); });

如果你返回的是一个promise对象的话 可以直接在后边.then() 或者.catch()

  • then() 里边接收到的是resolve返回的值
  • catch() 里边接收到的是reject返回的值 或者抛出的错误

你也可以用try catch ,道理大同小异,但是更推荐后边跟.catch() 因为这样的话我感觉更方便阅读一些

在项目里边如果是统一的操作可以把catch封装一下,避免代码冗余

它会把 reject 的值作为异常抛出来。

参见: https://developer.mozilla.org...

If the Promise is rejected, the await expression throws the rejected value.
新手上路,请多包涵

参考官方文档

结论:两种建议的处理方式

  1. try...catch()
  2. 链式调用 catch()

回答参考官方文档: await - JavaScript | MDN

promise 被拒绝

来自:# promise 被拒绝

如果 Promise 被拒绝,则抛出拒绝的原因。

async function f4() {
  try {
    const z = await Promise.reject(30);
  } catch (e) {
    console.error(e); // 30
  }
}

f4();

处理被拒绝的 promise

来自:处理被拒绝的 promise

你可以链式调用 catch()(而不是使用 try)以在等待 promise 兑现之前处理被拒绝的 promise。

const response = await promisedFunction().catch((err) => {
  console.error(err);
  return "default response";
});
// response will be "default response" if the promise is rejected
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题