javascript - 处理异步/等待中的链式承诺错误
问题描述
下面的代码应该将各种文件保存到数据库中,但如果一个文件失败,其他文件仍然保存但返回错误。如果没有保存任何数据或未保存列表中的一个数据,我该如何解决这种情况以显示错误消息?
try{
await Promise.all([
data1.save(),
data2.save(),
.....
])
}
catch(ex){
success: false,
error: ex
}
解决方案
您可以捕获各个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)
推荐阅读
- apache-spark - 在 Spark 中与 groupBy 一起使用领先和滞后函数的可能性
- javascript - How can I make the score run in seconds instead of miliseconds?
- javascript - 在这种情况下,“这个”实际上指的是什么?
- azure - 在我们的 MS Graph Webhook 上未收到删除 AAD 中用户的请求
- java - 范围报告覆盖类别,仅显示上次测试
- mysql - Mysql查询从另一个表中的值列表中获取值
- jenkins - 如何使用配置文件提供程序插件从 Jenkins 管道内的配置文件中读取属性
- vb.net - 无论如何将多个按钮保存为列表?
- django - Django 管理员根据标签选择 m2m 项目(项目的 m2m 字段)
- jquery - 销毁 DataTable 并使用新获取的数据重新创建