Javascript: Ejecución asíncrona de varias promesas


Si desarrollas con JavaScript utilizarás promesas habitualmente, son un mecanismo ideal para manejar ejecuciones asíncronas, especialmente en peticiones http a servidores. Utilizar una promesa es sencillo, pero cuando tienes que combinar la ejecución de varias podemos terminar en medio de un infierno.

Para evitar que terminemos creando un código farragoso e ilegible, o lo que es peor, un código que no funcione bien, JavaScript nos ofrece la posibilidad de controlar la ejecución de varias promesas de manera simultánea.

Con Promise.all() ponemos como condición para ejecutar un código que todas las promesas se hayan resuelto correctamente o que alguna de error. Os pongo un ejemplo:

Promise.all([Promise1, Promise2, Promise3])
 .then(result) => {
   console.log(result)
 })
 .catch(error => console.log(`Error en promesas ${error}`))

Si queremos esperar a que todas las promesas den respuesta tenemos Promise.allSettled(). Os pongo el ejemplo:

Promise.allSettled([Promise1, Promise2, Promise3])
 .then(result) => {
   console.log(result)
 })
 .catch(error => console.log(`Error en promesas ${error}`))


Si queremos esperar sólo a la primera respuesta recibida de una promesa tenemos Promise.race(). Os pongo el ejemplo:

Promise.race([Promise1, Promise2, Promise3])
 .then(result) => {
   console.log(result)
 })
 .catch(error => console.log(`Error en promesas ${error}`))

Espero que os sea de utilidad ^_^.




Comentarios