簡體   English   中英

如何在異步 for 循環后調用 function?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM