Tengo el siguiente 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 Una vez que haya terminado, quiero llamar a otra función. Dado que es asíncrono, ¿cómo puedo llamar a la función después de que el for-loop haya terminado, no durante?
Suponiendo que desea ejecutar la función, ya sea que se detecte o no un error y se vuelva a generar en su ciclo, puede simplemente envolver todo el ciclo en una instrucción try...finally : a continuación se muestra un ejemplo. (Si no, no estoy seguro de por qué está volviendo a generar el error detectado y qué tipo de comportamiento espera).
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 }No tienes que hacer nada. handleRelatedAccounts(); siempre se ejecuta después del bucle. await significa que esperará hasta que la premisa esté terminada para hacer el siguiente código. Debido a que throw Error(error) , detendrá la ejecución cuando haya una excepción, handleRelatedAccounts(); nunca será golpeado en este caso.