Uso de promesas para secuencialidad en JS

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, la asincronía es una constante. Las aplicaciones modernas a menudo necesitan realizar múltiples operaciones asíncronas, como cargar datos de una API, interactuar con una base de datos o ejecutar tareas de larga duración, sin bloquear la interfaz de usuario. JavaScript, el lenguaje de programación más utilizado en el desarrollo web, ofrece varias formas de abordar la asincronía y una de las más poderosas es el uso de promesas para secuencialidad en JS.

¿Qué son las promesas en JavaScript?

Antes de sumergirse en el uso de promesas para secuencialidad en JS, es importante comprender qué son las promesas en sí. Una promesa es un objeto que representa el resultado eventual de una operación asincrónica. Puede estar en uno de tres estados: pendiente, resuelta o rechazada. Las promesas se utilizan para manejar operaciones asíncronas de manera más legible y ordenada.

const miPromesa = new Promise((resolve, reject) => { 
// Código asíncrono aquí 
if (operacionExitosa) { 
resolve(resultado); 
} else { 
reject(error); 
} 
});

Promesas para secuencialidad en JS

Una de las situaciones comunes en las que se utilizan las promesas es cuando se necesita ejecutar varias operaciones asíncronas en secuencia, es decir, promesas para secuencialidad en JS. Esto se logra mediante el uso de las funciones then() y async/await.

Ejecutar promesas en secuencia

Supongamos que tenemos dos funciones que devuelven promesas, funcionUno y funcionDos, y queremos ejecutar la segunda promesa solo después de que la primera se haya completado. Podemos lograrlo de la siguiente manera:

funcionUno() 
.then((resultadoUno) => { 
// Realizar operaciones con resultadoUno 
return funcionDos(); 
}) .then((resultadoDos) => { 
// Realizar operaciones con resultadoDos 
}) 
.catch((error) => { 
// Manejar errores 
});

Este código garantiza que funcionDos se ejecute solo después de que funcionUno haya completado su trabajo con éxito.

Uso de async/await

El código anterior se puede mejorar aún más utilizando async/await, una característica de JavaScript que simplifica la escritura de código asíncrono. Con async/await, el ejemplo anterior se vería así:

try { 
const resultadoUno = await funcionUno(); 
// Realizar operaciones con resultadoUno 
const resultadoDos = await funcionDos(); 
// Realizar operaciones con resultadoDos
 } catch (error) { 
// Manejar errores 
}

El uso de async/await hace que el código sea más legible y fácil de entender al eliminar la necesidad de encadenar múltiples then().

Ejemplo práctico: Promesas para secuencialidad en JS

Imaginemos un escenario en el que estamos construyendo una aplicación web que necesita cargar datos de usuario desde una API antes de mostrarlos en el navegador. Aquí es donde las promesas para secuencialidad en JS pueden ser de gran ayuda.

async function obtenerDatosUsuario() { 
try { 
const datosUsuario = await cargarDatosUsuario(); 
// Realizar operaciones con datosUsuario 
const historialCompras = await cargarHistorialCompras(datosUsuario.id); 
// Realizar operaciones con historialCompras 
return { datosUsuario, historialCompras }; 
} catch (error) { 
// Manejar errores 
} 
}

En este ejemplo, primero llamamos a cargarDatosUsuario(), esperamos a que se resuelva la promesa, y luego llamamos a cargarHistorialCompras() con los datos del usuario obtenidos. Esto asegura que las operaciones se ejecuten en secuencia y de manera ordenada.

Promesas en paralelo

Además de la secuencialidad, las promesas también pueden ejecutarse en paralelo. Esto es útil cuando se tienen múltiples operaciones asíncronas que no dependen una de la otra y pueden ejecutarse al mismo tiempo.

const promesa1 = funcionAsincrona1(); 
const promesa2 = funcionAsincrona2(); 
Promise.all([promesa1, promesa2]) 
.then((resultados) => { 
// Realizar operaciones con resultados[0] y resultados[1] 
}) 
.catch((error) => { 
// Manejar errores 
});

En este ejemplo, ambas promesas, promesa1 y promesa2, se ejecutan en paralelo, y esperamos a que ambas se resuelvan antes de continuar.

Funciones callback y promesas

Antes del uso generalizado de promesas en JavaScript, las funciones callback eran la forma principal de manejar operaciones asíncronas. Aunque las promesas ofrecen una sintaxis más limpia y legible, es importante comprender las funciones callback, ya que a veces se encuentran en código anterior o en bibliotecas de terceros.

El uso de promesas para secuencialidad en JS es una técnica fundamental en el desarrollo web moderno. Permite manejar operaciones asíncronas de manera eficiente, manteniendo un código más legible y ordenado. Ya sea utilizando then() y catch() o aprovechando las ventajas de async/await, las promesas son una herramienta esencial.

Continúa aprendiendo en KeepCoding

Si deseas explorar más a fondo estos conceptos de promesas para secuencialidad en JS y convertirte en un experto en desarrollo web, el Desarrollo Web Full Stack Bootcamp de KeepCoding es todo lo que necesitas. En este bootcamp, aprenderás no solo sobre promesas en JavaScript, sino también sobre todas las tecnologías y habilidades necesarias para destacar en la industria tecnológica. No pierdas la oportunidad de cambiar tu vida y entrar en un sector con una alta demanda de profesionales que ofrece salarios altos y unas condiciones laborales que otros sectores no pueden igualar. ¡Inscríbete hoy mismo y comienza tu viaje hacia una carrera exitosa en el mundo de la tecnología!

Posts Relacionados

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

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