Saltar al contenido principal
eLearner.app
Módulo 7 · Lección 2 de 426/32 en el curso~12 min
Lecciones del módulo (2/4)

async / await

async/await es una sintaxis más clara para trabajar con las Promise: el código se lee como código síncrono, pero detrás de escena usa exactamente las mismas Promise de la lección anterior.

async function

Una función declarada con async devuelve siempre una Promise.

JS
async function quaranta() {
  return 40;
}

quaranta(); // Promise { 40 }
quaranta().then((v) => console.log(v)); // 40

Aunque devuelvas un valor "normal", la función lo envuelve en una Promise resuelta.

await

Dentro de una async function puedes poner await delante de una Promise: la ejecución se pausa hasta que la Promise se resuelva, y luego continúa con el valor resuelto.

JS
async function somma() {
  const a = await Promise.resolve(10);
  const b = await Promise.resolve(20);
  return a + b; // 30
}

Equivalente en estilo .then (más verboso):

JS
function somma() {
  return Promise.resolve(10).then((a) => Promise.resolve(20).then((b) => a + b));
}

await propaga los errores

Si la Promise es rejected, await vuelve a lanzar el error. Puedes capturarlo con un try/catch normal:

JS
async function leggi() {
  try {
    const x = await Promise.reject(new Error('no'));
    return x;
  } catch (err) {
    return 'errore: ' + err.message;
  }
}

leggi(); // Promise { 'errore: no' }

Arrow async

JS
const raddoppia = async (n) => n * 2;
raddoppia(5); // Promise { 10 }

Pruébalo tú

Ejercicio#js.m7.l2.e1
Intentos: 0Cargando...

Define una `async function addOne(p)` que reciba una Promise de un número y devuelva (como Promise) el número + 1. Usa await.

Cargando editor...
Mostrar pista

const n = await p; return n + 1;

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#js.m7.l2.e2
Intentos: 0Cargando...

Define `sumTwo(pa, pb)` async: recibe dos Promise de números, devuelve su suma. Usa dos await secuenciales.

Cargando editor...
Mostrar pista

await ognuna, poi return a + b.

Solución disponible después de 3 intentos