【发布时间】:2019-10-08 23:03:32
【问题描述】:
我正在使用以下 sn-p 执行多个承诺:
await Promise.all([promise1, promise2, promise3]);
我想要实现的是从Promise.all() 回滚成功的承诺对失败情况的影响。
更具体地说,这意味着上面会做一些文件加密,但如果一个失败,我想删除其他两个(或一个)加密成功的文件,以便拥有一致和干净的文件组。
根据我的阅读,这意味着我需要两个步骤:
1. 捕获每个promise 的错误,这样Promise.all() 就不会抛出错误。
2. 令人费解的部分:有另一个Promise.all() 之类的:
await Promise.all([rollbackPromise1, rollbackPromise2, rollbackPromise3]);
这似乎是棘手的部分:我是否应该独立于失败的承诺执行所有回滚?这意味着我应该对每个错误进行另一个捕获,以便 Promise.all() 等待每次回滚完成。
这是最好的方法吗?我发现它在代码方面效率低下且丑陋。
【问题讨论】:
标签: javascript node.js error-handling promise async-await