处理async / await中的链式承诺错误

问题描述 投票:2回答:1

下面的代码应该将各种文件保存到数据库中,但是如果一个文件失败,其他文件仍会保存,但会返回错误。如何处理此情况以显示基于是否未保存数据或未保存列表中的一个数据的错误消息?

 try{
   await Promise.all([
      data1.save(), 
      data2.save(),
      .....
   ])
 }
 catch(ex){
   success: false,
   error: ex
 }
javascript mongodb typescript
1个回答
1
投票

您可以捕获各个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)
© www.soinside.com 2019 - 2024. All rights reserved.