Avanzado

Promesas y async/await

Objetivo: Componer operaciones asíncronas con promesas, async/await y manejo de errores.

Explicación

Una promesa representa un valor futuro: pending, fulfilled o rejected.

- new Promise((resolve, reject) => {}) crea una promesa.
- .then(fn) maneja el éxito; .catch(fn) el error; .finally(fn) siempre se ejecuta.

async/await es azúcar sintáctico sobre promesas:
- Una función async siempre retorna una promesa.
- await pausa la función hasta que la promesa se resuelva.
- Los errores se capturan con try/catch, igual que en código síncrono.

Con Promise.all([...]) puedes ejecutar varias promesas en paralelo y esperar a todas.

Ejemplos

const promesa = new Promise((resolve) => {
  setTimeout(() => resolve("listo"), 1000)
})
promesa.then(v => console.log(v)) // "listo" tras 1s
async function obtenerDato() {
  try {
    const respuesta = await fetch("/api")
    const datos = await respuesta.json()
    return datos
  } catch (error) {
    console.error("Falló:", error)
  }
}
const [usuarios, posts] = await Promise.all([fetch("/u"), fetch("/p")])

Comprueba tu comprensión

Pregunta 1 de 5

¿Cuáles son los tres estados posibles de una promesa?

Práctica opcional

Estos ejercicios no afectan tu dominio de la lección.

  • Envuelve setTimeout en una promesa esperar(ms) y úsala con await dentro de una función async.
  • Ejecuta dos fetch en paralelo con Promise.all y compara el tiempo total con ejecutarlos en serie.