Middle+
/* Que sera affiché dans la console */ async function f() { console.log(1); const promise = new Promise((resolve) => { console.log(2); setTimeout(() => { console.log(3); resolve("Prêt!"); console.log(4); }); }); console.log(5); const result = await promise; console.log(6); console.log(result); return "Résultat"; } f(); console.log(7);
sobes.tech IA
Réponse de l'IA
Considérons la séquence de sortie dans la console:
async function f() {
console.log(1); // 1
const promise = new Promise((resolve) => {
console.log(2); // 2
setTimeout(() => {
console.log(3); // 3 (environ 0 ms)
resolve("prêt!");
console.log(4); // 4
});
});
console.log(5); // 5
const result = await promise; // attend la résolution de la promesse
console.log(6); // 6
console.log(result); // "prêt!"
return "Résultat";
}
f();
console.log(7); // 7
Explication de l'ordre d'affichage:
console.log(1);— synchroneconsole.log(2);— synchrone lors de la création de la promesseconsole.log(5);— synchrone après la création de la promesseconsole.log(7);— synchrone après l'appel àf()
Ensuite, le setTimeout (microtâche) est déclenché:
console.log(3);console.log(4);
Après que la promesse est résolue avec resolve, elle passe à l'état fulfilled, et await continue l'exécution:
console.log(6);console.log(result);— affiche "prêt!"
La séquence totale de sortie est:
1
2
5
7
3
4
6
prêt!