Chuck's Academy

Async/Await en JavaScript

Operaciones Asíncronas en Paralelo

En muchos escenarios, es beneficioso ejecutar múltiples operaciones asíncronas en paralelo para mejorar la eficiencia y reducir el tiempo total de ejecución. JavaScript proporciona diversas técnicas para gestionar operaciones asíncronas en paralelo utilizando Async/Await y otras utilidades de promesas como Promise.all.

Ejecución en Paralelo con Promise.all

Promise.all permite ejecutar múltiples promesas en paralelo y esperar hasta que todas se hayan resuelto o alguna haya sido rechazada. Esto es útil cuando las operaciones son independientes y no dependen unas de otras.

Ejemplo Básico con Promise.all

Supongamos que necesitamos obtener datos de varios servicios a la vez:

javascript

En este ejemplo, Promise.all ejecuta obtenerDatos1, obtenerDatos2 y obtenerDatos3 en paralelo. El código esperará a que todas las promesas se resuelvan antes de continuar.

Ventajas de la Ejecución en Paralelo

  1. Eficiencia: Reducir el tiempo total de espera al ejecutar operaciones independientes simultáneamente.
  2. Simplicidad: Promise.all simplifica la gestión de operaciones paralelas, haciendo que el código sea más limpio y fácil de seguir.

Uso de Promise.race

Promise.race es otra utilidad que permite esperar hasta que una de las promesas en un array se resuelva o se rechace. Esto puede ser útil para operaciones donde la primera respuesta es la importante, o para implementar tiempos de espera.

Ejemplo de Promise.race

javascript

En este ejemplo, Promise.race se utiliza para implementar un límite de tiempo para obtener datos. Si los datos no se obtienen en menos de 2000 ms, se lanza un error de "Tiempo de espera excedido".

Consideraciones al Ejecutar en Paralelo

  1. Independencia: Asegúrate de que las operaciones que ejecutes en paralelo sean realmente independientes unas de otras. Si una operación depende del resultado de otra, debería ser ejecutada en secuencia.
  2. Manejo de Errores: Cuando usas Promise.all, si alguna promesa se rechaza, todas las otras promesas se cancelan automáticamente. Asegúrate de manejar errores adecuadamente.
  3. Recursos del Sistema: Ejecutar muchas operaciones en paralelo puede consumir muchos recursos del sistema. Controla el número de promesas para evitar sobrecargar el sistema.

Ejemplo Completo: Obtener y Procesar Datos en Paralelo

Veamos un ejemplo completo donde obtenemos datos de múltiples fuentes y procesamos los resultados en paralelo:

javascript

Conclusión

Manejar operaciones asíncronas en paralelo utilizando Async/Await y Promise.all mejora la eficiencia y la claridad del código. Asegúrate de entender cuándo y cómo utilizar estas técnicas para maximizar el rendimiento sin introducir problemas de concurrencia o sobrecarga del sistema.


Pregúntame lo que sea