[英]How to call a function after an asynchronous for-loop?
我有以下for-loop
:
for await (const account of accountCursor) {
const newAccount = handleAccount(account, migrationService);
try {
await migrationService.accountService.create(newAccount);
} catch (error) {
console.log('Unable to create account');
throw Error(error)
}
}
handleRelatedAccounts(); // call once the for-loop has completed
一旦完成,我想調用另一個 function。由於它是異步的,我如何在for-loop
完成后調用 function,而不是在循環期間?
假設您想要運行 function 無論是否在循環中捕獲並重新拋出錯誤,您都可以將整個循環包裝在try...finally
語句中:下面是一個示例。 (如果不是,我不確定你為什么要重新拋出捕獲的錯誤以及你期望什么樣的行為。)
try {
for await (const account of accountCursor) {
const newAccount = handleAccount(account, migrationService);
try {
await migrationService.accountService.create(newAccount);
} catch (error) {
console.log('Unable to create account');
throw Error(error)
}
}
}
finally {
handleRelatedAccounts(); // call once the for-loop has completed
}
您無需執行任何操作。 handleRelatedAccounts();
總是在循環之后運行。 await
表示會等到前提完成后再做下一段代碼。 因為你throw Error(error)
,它會在出現異常時停止執行, handleRelatedAccounts();
在這種情況下永遠不會被擊中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.