Middle+
/* Cosa verrà visualizzato nella console */ async function f() { console.log(1); const promise = new Promise((resolve) => { console.log(2); setTimeout(() => { console.log(3); resolve("pronto!"); console.log(4); }); }); console.log(5); const result = await promise; console.log(6); console.log(result); return "Risultato"; } f(); console.log(7);
sobes.tech AI
Risposta dell'AI
Consideriamo la sequenza di output sulla console:
async function f() {
console.log(1); // 1
const promise = new Promise((resolve) => {
console.log(2); // 2
setTimeout(() => {
console.log(3); // 3 (circa 0 ms)
resolve("pronto!");
console.log(4); // 4
});
});
console.log(5); // 5
const result = await promise; // aspettiamo la risoluzione della promessa
console.log(6); // 6
console.log(result); // "pronto!"
return "Risultato";
}
f();
console.log(7); // 7
Spiegazione dell'ordine di output:
console.log(1);— sincronoconsole.log(2);— sincrono alla creazione della promessaconsole.log(5);— sincrono dopo aver creato la promessaconsole.log(7);— sincrono dopo aver chiamatof()
Poi si attiva il setTimeout (microtask):
console.log(3);console.log(4);
Dopo che la promessa viene risolta con resolve, passa allo stato fulfilled, e await continua l'esecuzione:
console.log(6);console.log(result);— mostra "pronto!"
La sequenza totale di output è:
1
2
5
7
3
4
6
pronto!