Middle+
/* Wat wordt er in de console weergegeven */ async function f() { console.log(1); const promise = new Promise((resolve) => { console.log(2); setTimeout(() => { console.log(3); resolve("klaar!"); console.log(4); }); }); console.log(5); const result = await promise; console.log(6); console.log(result); return "Resultaat"; } f(); console.log(7);
sobes.tech AI
Antwoord van AI
Laten we de uitvoerreeks in de console bekijken:
async function f() {
console.log(1); // 1
const promise = new Promise((resolve) => {
console.log(2); // 2
setTimeout(() => {
console.log(3); // 3 (ongeveer 0 ms)
resolve("klaar!");
console.log(4); // 4
});
});
console.log(5); // 5
const result = await promise; // wachten op de resolutie van de belofte
console.log(6); // 6
console.log(result); // "klaar!"
return "Resultaat";
}
f();
console.log(7); // 7
Uitleg van de uitvoervolgorde:
console.log(1);— synchroonconsole.log(2);— synchroon bij het maken van de belofteconsole.log(5);— synchroon na het maken van de belofteconsole.log(7);— synchroon na het aanroepen vanf()
Vervolgens wordt setTimeout (microtaak) getriggerd:
console.log(3);console.log(4);
Na de belofte te hebben opgelost met resolve, gaat deze naar de fulfilled-stand, en await vervolgt de uitvoering:
console.log(6);console.log(result);— toont "klaar!"
De totale uitvoervolgorde is:
1
2
5
7
3
4
6
klaar!