Gestionar múltiples promesas en paralelo en JavaScript

Autor: | Última modificación: 15 de marzo de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

En el mundo del desarrollo web, trabajar con promesas es una tarea común. Las promesas son objetos que representan un valor futuro y se utilizan para realizar operaciones asíncronas en JavaScript de una manera más organizada y controlada. Pero ¿qué sucede cuando necesitas ejecutar varias en paralelo? Aquí es donde entra en juego el concepto de gestionar múltiples promesas en paralelo, una habilidad esencial para cualquier desarrollador web.

Promesas en JavaScript

Antes de profundizar en cómo gestionar múltiples promesas en paralelo, es importante comprender lo básico sobre las promesas en JavaScript. Una promesa es un objeto que representa el resultado eventual de una operación asincrónica. Puede tener tres estados: pendiente, resuelta o rechazada. Cuando una promesa se resuelve, se ejecuta una función de callback asociada, generalmente utilizando el método .then().

const miPromesa = new Promise((resolve, reject) => { 
// Operación asincrónica 
if (operacionExitosa) { 
resolve(resultado); 
} else { 
reject(error);
 } 
}); 
miPromesa.then((resultado) => { 
// Hacer algo con el resultado 
})
.catch((error) => { 
// Manejar el error 
});

Ejecutar promesas en paralelo

En muchas situaciones, necesitas ejecutar múltiples promesas en paralelo y esperar a que todas se resuelvan antes de continuar con tu programa. Aquí es donde Promise.all entra en juego. Esta función toma un iterable de promesas y devuelve una nueva promesa que se resuelve cuando todas las promesas en el iterable se han resuelto o una se ha rechazado.

const promesa1 = asyncFuncion1(); 
const promesa2 = asyncFuncion2(); 
const promesa3 = asyncFuncion3(); 
Promise.all([promesa1, promesa2, promesa3]) 
.then((resultados) => { 
// Hacer algo con los resultados 
}) 
.catch((error) => { 
// Manejar el error 
});

Es importante destacar que si una de las promesas se rechaza, Promise.all atrapará ese error y ejecutará el catch correspondiente. Esto asegura que todas las promesas se manejen correctamente.

Async/await para una sintaxis más limpia

Si bien Promise.all es una forma efectiva de gestionar múltiples promesas en paralelo, el uso de async/await puede hacer que tu código sea más limpio y fácil de entender. Con async/await, puedes escribir código asíncrono de manera similar a código síncrono.

async function ejecutarTodasLasPromesas() { 
try { 
const resultado1 = await asyncFuncion1(); 
const resultado2 = await asyncFuncion2(); 
const resultado3 = await asyncFuncion3(); 
// Hacer algo con los resultados 
} catch (error) { 
// Manejar el error de cualquier promesa 
} 
} 
ejecutarTodasLasPromesas();

Usar async/await simplifica la lógica de manejo de errores y hace que tu código sea más legible.

¿Por qué gestionar múltiples promesas en paralelo?

Puedes preguntarte por qué es importante gestionar múltiples promesas en paralelo en lugar de hacerlo de forma secuencial. La respuesta está en el rendimiento y la eficiencia. Cuando ejecutas promesas en paralelo, aprovechas al máximo la capacidad de procesamiento de tu sistema y reduces el tiempo de espera total. Esto es crucial en aplicaciones web que deben manejar múltiples solicitudes asincrónicas simultáneamente.

Promise resolve y función callback

Antes de terminar, es importante mencionar Promise.resolve y la función callback. Promise.resolve es una forma de crear una promesa que se resuelve de inmediato con un valor dado. Es útil cuando deseas convertir un valor en una promesa para que coincida con el flujo de tu código asíncrono.

const miValor = 42; 
const miPromesa = Promise.resolve(miValor); 
miPromesa.then((valor) => { 
// Valor es igual a 42 
});

La función callback es una función que se pasa como argumento a otra función y se ejecuta después de que esa función haya completado su operación. Es una técnica común para manejar operaciones asincrónicas en JavaScript.

Gestionar múltiples promesas en paralelo es una habilidad esencial para cualquier desarrollador web. Te permite aprovechar al máximo la capacidad de procesamiento de tu sistema y mejorar el rendimiento de tus aplicaciones. Tanto Promise.all como async/await son herramientas poderosas para lograrlo y la elección entre ellas depende de tus necesidades y preferencias.

Continúa tu viaje de aprendizaje con nosotros

Si estás interesado en convertirte en un desarrollador web completo y tener la oportunidad de cambiar tu vida, te invitamos a unirte al Desarrollo Web Full Stack Bootcamp de KeepCoding. En este programa, aprenderás no solo a gestionar múltiples promesas en paralelo, sino también todas las habilidades necesarias para ingresar al sector de tecnología de la información en poco tiempo. El sector tecnológico es una industria con una alta demanda de profesionales que ofrece salarios altos y una estabilidad laboral que otros sectores no pueden igualar. ¡No esperes más y da el paso hacia una carrera emocionante en desarrollo web con KeepCoding!

Artículos ms leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado