Middle+
/* Шта ће се приказати у конзоли */ async function f() { console.log(1); const promise = new Promise((resolve) => { console.log(2); setTimeout(() => { console.log(3); resolve("готово!"); console.log(4); }); }); console.log(5); const result = await promise; console.log(6); console.log(result); return "Резултат"; } f(); console.log(7);
sobes.tech АИ
Одговор од АИ
Razmotrimo redosled izlaza u konzoli:
async function f() {
console.log(1); // 1
const promise = new Promise((resolve) => {
console.log(2); // 2
setTimeout(() => {
console.log(3); // 3 (otprilike 0 ms)
resolve("spreman!");
console.log(4); // 4
});
});
console.log(5); // 5
const result = await promise; // čekamo da se rešenje obećanja
console.log(6); // 6
console.log(result); // "spreman!"
return "Rezultat";
}
f();
console.log(7); // 7
Objašnjenje reda izlaza:
console.log(1);— sinhronoconsole.log(2);— sinhrono pri kreiranju obećanjaconsole.log(5);— sinhrono nakon kreiranja obećanjaconsole.log(7);— sinhrono nakon pozivaf()
Zatim se aktivira setTimeout (mikrotask):
console.log(3);console.log(4);
Nakon što se obećanje reši sa resolve, prelazi u stanje fulfilled, i await nastavlja izvršenje:
console.log(6);console.log(result);— prikazuje "spreman!"
Ukupni red izlaza je:
1
2
5
7
3
4
6
spreman!