Sobes.tech
Middle+

/* ¿Qué se mostrará en la consola? */ async function f() { console.log(1); const promise = new Promise((resolve) => { console.log(2); setTimeout(() => { console.log(3); resolve("¡Listo!"); console.log(4); }); }); console.log(5); const result = await promise; console.log(6); console.log(result); return "Resultado"; } f(); console.log(7);

sobes.tech AI

Respuesta de la IA

Consideremos la secuencia de salida en la consola:

async function f() {
  console.log(1); // 1
  const promise = new Promise((resolve) => {
    console.log(2); // 2
    setTimeout(() => {
      console.log(3); // 3 (aproximadamente 0 ms)
      resolve("¡listo!");
      console.log(4); // 4
    });
  });
  console.log(5); // 5

  const result = await promise; // esperamos la resolución de la promesa
  console.log(6); // 6
  console.log(result); // "¡listo!"
  return "Resultado";
}

f();
console.log(7); // 7

Explicación del orden de salida:

  1. console.log(1); — sincrónico
  2. console.log(2); — sincrónico al crear la promesa
  3. console.log(5); — sincrónico después de crear la promesa
  4. console.log(7); — sincrónico después de llamar a f()

Luego se activa setTimeout (microtarea):

  1. console.log(3);
  2. console.log(4);

Después de que se resuelve la promesa con resolve, esta pasa a estado fulfilled, y await continúa la ejecución:

  1. console.log(6);
  2. console.log(result); — muestra "¡listo!"

La secuencia total de salida es:

1
2
5
7
3
4
6
¡listo!