Tengo el siguiente código:
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 }); }¿Es así como se usa async/await? Si una de las ejecuciones falla, ¿falla todo el código y se arroja al bloque catch? ¿Significa que los próximos 50 proyectos no se ejecutan? ¿Qué sucede cuando la espera arroja un error?
El objetivo es eliminar proyectos por lotes. Estoy haciendo una llamada a la API y enviando una lista de 50 proyectos de API para que se eliminen. Si la solicitud fue exitosa, la llamada de ejecución devolverá un objeto con statusCode = 200.
Si desea procesar sus proyectos secuencialmente, deteniéndose en la primera falla, luego, como sugiere el comentario de Unmitigated, simplemente await la llamada a su función de execute ( await execute(assets); ).
En el caso de que quieras lanzarlos todos en paralelo, y saber si alguno falla, puedes acumular las Promesas devueltas y esperar al grupo:
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) { // ... }