DevPath · Aprende a programar ESPTEN

Asincronía: promesas y async/await

async / await y Promise.all

async / await

async/await es azúcar sintáctico sobre las promesas que permite escribir código asíncrono que se lee como si fuera síncrono.

async function cargarUsuario() {
  const respuesta = await fetch("/usuario"); // espera la promesa
  const datos = await respuesta.json();
  return datos;
}

Para manejar errores con await, se usa try...catch:

async function cargar() {
  try {
    const datos = await pedirDatos();
    return datos;
  } catch (error) {
    console.log("Falló:", error.message);
  }
}

Promise.all: esperar varias a la vez

Cuando tienes varias tareas independientes, no las esperes una a una: lánzalas en paralelo con Promise.all, que se cumple cuando todas terminan.

const [a, b] = await Promise.all([pedirA(), pedirB()]);

Recuerda que una función async se identifica por fn.constructor.name === "AsyncFunction", y que llamar a cualquier función async devuelve un objeto que es instanceof Promise.

Ejemplos

Una función async siempre devuelve una promesa

async function saludar() {
  return "hola";
}
console.log(saludar.constructor.name);   // "AsyncFunction"
console.log(saludar() instanceof Promise); // true
saludar().then((v) => console.log(v));   // "hola"
Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
← PromesasMicrotareas vs macrotareas →