Обрабатывать ошибки связанного обещания в async / await - PullRequest
0 голосов
/ 11 мая 2018

Предполагается, что приведенный ниже код сохраняет различные файлы в БД, но в случае сбоя одного из них все еще сохраняется, но возвращается ошибка.Как решить эту ситуацию, чтобы отобразить сообщение об ошибке, если ни одна из данных не была сохранена или одна из данных не была сохранена?

 try{
   await Promise.all([
      data1.save(), 
      data2.save(),
      .....
   ])
 }
 catch(ex){
   success: false,
   error: ex
 }

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете отлавливать ошибки в отдельных save() функциях и просто возвращать их или какое-либо значение, чтобы указать на ошибку.Тогда Promise.all() соберет обе ошибки и результаты вместе, чтобы вы имели дело позже:

function save(n){
    // rejects on 'bad' input
    return n == "bad" ? Promise.reject("error") : Promise.resolve("worked")
}
async function saveThings() {
    try{
        let res = await Promise.all([
            save('good').catch((err) => err), 
            save('bad').catch((err) => err),
            save('good').catch((err) => err),
        ])
        return res

    } catch(err){
        console.log(err)
    } 
}
saveThings()
.then(console.log)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...