Как вручную вызвать отклонение в async-await - PullRequest
3 голосов
/ 24 марта 2019

Я работал с Promises в Javascript и пытаюсь реализовать свои функции в async-await. Как мне вызвать reject (), который будет пойман в .catch () в async-await

В обещаниях у нас есть способ вручную вызвать отклонение ():

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 ]

4 голосов
/ 24 марта 2019

Просто скинуть ошибку:

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

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

main()
.then(() => {
  console.log("finished!")
})
.catch((e) => {
  console.error(e);
})
2 голосов
/ 24 марта 2019

Promise.reject() где-нибудь в цепочке обещаний должно это сделать.

0 голосов
/ 25 марта 2019

Имейте это так:

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

} })

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...