[英]Is this the correct way to use async/await?
我有以下代码:
var execute = async (assets: DCXComposite[], session: Session) => {
// this returns a response object with statusCode property. If the status Code is 200, it was a successful operation.
return await session.performBatchOperation();
};
try {
var assets: Composite[] = [];
for (const project of projects) {
assets.push(project.getComposite());
if (assets.length === 50) {
var result = execute(assets);
assets = [];
}
}
} catch (err) {
Logger.error('Unable to batch delete projects', { error: err });
}
这是如何使用异步/等待? 如果其中一个执行失败,整个代码是否会失败并被扔到 catch 块中? 意味着接下来的 50 个项目没有执行? 当 await 抛出错误时会发生什么?
目标是批量删除项目。 我正在拨打 API 电话并发送要删除的 50 个 API 项目的列表。 如果请求成功,则执行调用将返回一个 object,statusCode = 200。
如果您想按顺序处理您的项目,在第一次失败时停止,然后按照 Unmitigated 的评论的建议,然后只需await
调用您的execute
function ( await execute(assets);
)。
如果您想并行启动所有这些,并知道其中是否有任何失败,您可以累积返回的 Promises 并等待该组:
const allResults = [];
try {
for (const project of projects) {
// ...
allResults.push(execute(/* ... */));
}
// Await for ALL promises to complete, or throw at first failure
await Promise.all(allResults);
} catch (err) {
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.