gpt4 book ai didi

javascript - 等待所有步骤成功或失败的异步步骤

转载 作者:行者123 更新时间:2023-11-29 11:03:23 25 4
gpt4 key购买 nike

我有一个服务器端 Node.JS 脚本,它通过 (1) 将上传内容保存到特定位置并 (2) 将其记录在数据库中来处理文件上传。我一直在使用 Asynquence 库及其门函数(相当于 Promise.all)来并行执行这些步骤,但我需要序列的行为,以便在任一步骤失败时撤消另一步骤(如果成功)。显然,撤消步骤只有在其匹配步骤已经成功时才能执行(即删除文件或数据库记录)

Gate 似乎不适用于这种情况,因为如果任何步骤失败,它都会触发错误处理程序。是否有等待所有步骤成功或失败的函数?

最佳答案

如果您将 catch 视为 try 的异步对应物,那么您可以构建一个快速包装器来包装传递给 gate 的每个值或 Promise.all 并返回“成功”或“失败”的结果。

function waitForAll(inputArray) {
// Return Promise.all on an array where for each array value...
return Promise.all(inputArray.map(function(x)
// ...we wrap it in a tiny dict with the semantics we want.
return Promise.resolve(x).then(function(value) {
return { success: true, value: value };
}, function(error) {
return { success: false, error: error };
});
}));
}

作为奖励,由于您可以在包装器中根据 promise 执行任何操作,您甚至可以通过单独的 channel 快速报告失败,或者在任何异步步骤失败时立即开始取消或回滚成功的操作。

关于javascript - 等待所有步骤成功或失败的异步步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43323474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com