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:
console.log(1);— sincrónicoconsole.log(2);— sincrónico al crear la promesaconsole.log(5);— sincrónico después de crear la promesaconsole.log(7);— sincrónico después de llamar af()
Luego se activa setTimeout (microtarea):
console.log(3);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:
console.log(6);console.log(result);— muestra "¡listo!"
La secuencia total de salida es:
1
2
5
7
3
4
6
¡listo!