Chuck's Academy

JavaScript Intermedio

Promesas y Async/Await Avanzado

El manejo de asincronía en JavaScript es fundamental para trabajar con operaciones que tardan en completarse, como solicitudes a APIs o procesamiento de archivos. En este capítulo, exploraremos técnicas avanzadas para manejar Promesas y el uso de async y await.

![promise en javascript(/uploads/promise_2ad629aaf8.jpg)

Creación de Promesas

Una Promesa representa una operación asincrónica que puede completarse (resolve) o fallar (reject).

javascript
"Aquí, creamos una Promesa que se completa con éxito si 'success' es verdadero, llamando a 'resolve'. Si es falso, se llama a 'reject'."

Encadenamiento de Promesas

Las Promesas se pueden encadenar usando then para manejar resultados y catch para manejar errores.

javascript
"En este ejemplo, encadenamos 'then' para transformar el resultado en mayúsculas, y usamos 'catch' al final para capturar errores, si ocurren."

async y await

async y await son palabras clave que permiten trabajar con Promesas de una manera más legible, como si fueran funciones síncronas.

javascript
"Aquí, 'fetchData' es una función asíncrona que espera la respuesta de 'fetch' y luego convierte esa respuesta a JSON. Si ocurre un error, se captura en el bloque 'catch'."

Manejo de Errores con try/catch

El uso de try/catch en funciones asíncronas permite capturar errores de manera similar a la programación síncrona.

javascript
"En este ejemplo, utilizamos 'try/catch' para capturar errores en la función asíncrona 'getUserData' cuando 'fetchUser' falla."

Ejecución Paralela con Promise.all

Promise.all permite ejecutar varias Promesas en paralelo y esperar a que todas se completen antes de proceder.

javascript
"Usamos 'Promise.all' para ejecutar solicitudes de 'posts' y 'comments' en paralelo y esperamos a que ambas se completen antes de procesar los datos."

Promise.race para Competencia de Promesas

Promise.race permite ejecutar varias Promesas y solo devuelve el resultado de la primera Promesa que se resuelve o se rechaza.

javascript
"Aquí, 'Promise.race' ejecuta una solicitud a la API y un temporizador. Si la solicitud toma más de 5 segundos, el temporizador rechaza la Promesa con 'Timed out'."

Retrasos con setTimeout en Promesas

A veces, es útil retrasar una Promesa por un tiempo específico. Podemos combinar setTimeout con Promesas para crear un retraso.

javascript
"En este ejemplo, 'delay' es una función que devuelve una Promesa que se resuelve después de un tiempo específico. 'delayedMessage' muestra un mensaje inicial, espera 2 segundos y luego muestra otro mensaje."

Conclusión

cuadro comparativo entre promesas y async/awaitcuadro comparativo entre promesas y async/await

El manejo avanzado de Promesas y el uso de async/await en JavaScript te permite trabajar con asincronía de manera clara y eficiente. Con técnicas como Promise.all y Promise.race, puedes ejecutar múltiples operaciones asincrónicas y gestionar tiempos de respuesta de forma efectiva.


Pregúntame lo que sea