circle-info
Desarrollo en curso, en breve se publicarán el resto de temas.

Capítulo 5: Async/Await

async/await es la forma moderna y más legible de escribir código asíncrono en JavaScript. Bajo el capó, usa promesas, pero la sintaxis es mucho más parecida al código síncrono. Este capítulo cubre cómo usar estas palabras clave.

5.1. Funciones async: Definición y retorno implícito de promesas

Una función async siempre retorna una promesa, incluso si no la creas explícitamente.

// Sintaxis: async function nombre() { ... }

async function saludar() {
    return "Hola";
}

// Una función async SIEMPRE retorna una Promise
const promesa = saludar();
console.log(promesa); // Promise { "Hola" }

// Para obtener el valor, usa .then() o await
promesa.then(valor => console.log(valor)); // "Hola"

Comportamiento automático:

async function ejemplo1() {
    return 42;
}

async function ejemplo2() {
    return Promise.resolve(42);
}

async function ejemplo3() {
    throw new Error("Error");
}

// Todos retornan Promesas
ejemplo1().then(v => console.log(v)); // 42
ejemplo2().then(v => console.log(v)); // 42
ejemplo3().catch(e => console.error(e)); // Error

5.2. La palabra clave await: Esperar una promesa

await pausa la ejecución de la función async hasta que la promesa se resuelva o rechace. Solo funciona dentro de funciones async.

Esperar una promesa:


5.3. Equivalencia con .then() y por qué es más legible

async/await y las promesas son exactamente equivalentes, pero async/await es más legible.

Comparación: Promesas vs Async/Await

Parecido a código síncrono:


5.4. Manejo de errores: try/catch asíncrono

Con async/await, manejas errores con el bloque try/catch que ya conoces.

Diferencia vs .catch():


5.5. Operaciones en paralelo vs secuencial con async/await

Secuencial (esperamos cada una):

Paralelo (con Promise.all):

Regla de oro:


5.6. Arrow functions async

También puedes usar async con arrow functions:


5.7. Async IIFE (Immediately Invoked Function Expression)

A veces necesitas ejecutar código async en el nivel superior:


Resumen del Capítulo

async/await es la forma moderna de escribir código asíncrono que es legible y mantenible. Bajo el capó, son solo promesas, pero la sintaxis es mucho más clara. Recuerda usar try/catch para errores y Promise.all() para operaciones paralelas.

💡 Conceptos Clave:

  • async function: Siempre retorna una promesa

  • await: Pausa y espera una promesa

  • Solo en async: await solo funciona dentro de funciones async

  • try/catch: Manejo de errores

  • finally: Se ejecuta siempre

  • Secuencial vs Paralelo: Usa Promise.all para paralelizar

  • Equivalencia: async/await es equivalente al uso de promesas

  • Arrow functions async: async () => { ... }

🤔 Preguntas de Reflexión:

  1. ¿Por qué una función async siempre retorna una promesa?

  2. ¿Cuál es la diferencia entre esperar secuencialmente y en paralelo?

  3. ¿Cómo maneja async/await los errores comparado con .catch()?

  4. ¿Cuándo usarías await vs Promise.all()?

  5. ¿Qué sucede si olvidas await ante una promesa?

  6. ¿Por qué es más legible async/await que Promise chaining?

  7. Convierte una cadena de promesas a async/await.


Última actualización

¿Te fue útil?