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 1sasync 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
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.