streakode

ES2025 · TypeScript 7.0

Ejercicios de JavaScript / TypeScript sobre Asincronía

4 ejercicios de Asincronía en JavaScript / TypeScript. Piensa la respuesta antes de abrirla: la explicación dice por qué las demás opciones fallan.

  1. 1 · Elige la respuesta · nivel 2

    ¿Qué imprime este código?

    const results = await Promise.allSettled([  Promise.resolve(1),  Promise.reject(new Error("fallo")),]);console.log(results.map((r) => r.status).join(","));
    • Afulfilled,rejected
    • Bfulfilled
    • CError: fallo
    • Dresolved,rejected
    Ver la respuesta

    Respuesta: A. fulfilled,rejected

    allSettled espera a todas las promesas y nunca rechaza: devuelve un objeto por promesa con status fulfilled o rejected. Promise.all, en cambio, rechazaría con el primer error.

  2. 2 · Elige la respuesta · nivel 2

    ¿En qué orden se imprimen las letras?

    async function f() {  console.log("B");  await null;  console.log("D");}console.log("A");f();console.log("C");
    • AA B C D
    • BA B D C
    • CA C B D
    • DB A C D
    Ver la respuesta

    Respuesta: A. A B C D

    Una función async se ejecuta de forma síncrona hasta el primer await. Ahí cede el control, se imprime C y lo que queda de f continúa como microtarea.

  3. 3 · Encuentra el fallo · nivel 2

    Imprime "Todo guardado" antes de que terminen los guardados. ¿Qué línea tiene el fallo?

    1async function saveAll(items) {2  items.forEach(async (item) => {3    await save(item);4  });5  console.log("Todo guardado");6}
    Ver la respuesta

    El fallo está en la línea 2: items.forEach(async (item) => {

    forEach no espera a las promesas que devuelve el callback. Hay que usar for (const item of items) { await save(item); } o await Promise.all(items.map(save)).

  4. 4 · Completa el hueco · nivel 2

    Completa para lanzar las dos peticiones a la vez y esperar a ambas.

    const [user, posts] = ___ Promise.___([  Promise.resolve("ana"),  Promise.resolve([1, 2]),]);console.log(user, posts.length);
    • await
    • all
    • async
    • race
    • then
    • any
    Ver la respuesta

    Respuesta: await · all

    const [user, posts] = await Promise.all([  Promise.resolve("ana"),  Promise.resolve([1, 2]),]);console.log(user, posts.length);

    Promise.all espera a todas y devuelve sus resultados en el mismo orden, así que se pueden desestructurar. race y any devolverían solo el resultado de una.

Más temas de JavaScript / TypeScript

Ver toda la ruta de JavaScript / TypeScript