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;
}
- La palabra
asyncdelante de una función hace que siempre devuelva una promesa. - La palabra
awaitpausa la función hasta que la promesa se resuelve, y devuelve su valor. Solo se puede usar dentro de funcionesasync.
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"