提问者:小点点

如何在async-await中手动触发拒绝


我曾经在Javascript中处理过许诺,我正在尝试在async-await中实现我的功能。如何触发将在async-await中的。catch()中捕获的reject()

在promises中,我们有一种手动触发reject()的方法:

const doSomething = (someNumber)=>{
    return new Promise((resolve,reject)=>{
    if (someNumber > 5) {
        resolve('this resolves when someNumber is greater than 5')
    }else{
        reject('this gives a reject when someNumber is not greater than 5')
    }

    })
}

doSomething(7)
.then((infoMessage)=>{
    //this will show
    console.log(infoMessage)
})
.catch((err)=>{
    //this wont show
    console.log(errMessage)
})

doSomething(3)
.then((infoMessage)=>{
        //this wont show
    console.log(infoMessage)
})
.catch((err)=>{
        //this will show
    console.log(errMessage)
})

共3个答案

匿名用户

只需抛出错误:

async function rejectMe() {
   throw new Error("rejected!");
}

async function main() {
  await rejectMe();
}

main()
.then(() => {
  console.log("finished!")
})
.catch((e) => {
  console.error(e);
})

匿名用户

在承诺链中的任何位置都应该这样做。

匿名用户

这样做吧:

const doSomething = (someNumber)=>{
if (someNumber > 5) {
    return Promise.resolve('this resolves when someNumber is greater than 5')
}
else
  {
    return Promise.reject('this gives a reject when someNumber is not greater than 5')
  }
})