简体   繁体   English

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

[英]How to manually trigger a reject in async-await

I have worked with Promises in Javascript and I am trying to implement my functions in async-await .我曾在 Javascript 中使用过 Promises,我正在尝试在 async-await 中实现我的功能。 How do I trigger a reject() which will be caught in .catch() in async-await如何触发将在 async-await 中的 .catch() 中捕获的 reject()

In promises we have a way to manually trigger a 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)
})

Just throw the error:只是抛出错误:

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

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

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

Promise.reject()在承诺链中的任何地方都应该这样做。

Have it this way:这样做:

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')
  }
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM