Middle+
/* Co zostanie wyświetlone w konsoli */ async function f() { console.log(1); const promise = new Promise((resolve) => { console.log(2); setTimeout(() => { console.log(3); resolve("gotowe!"); console.log(4); }); }); console.log(5); const result = await promise; console.log(6); console.log(result); return "Wynik"; } f(); console.log(7);
sobes.tech AI
Odpowiedź od AI
Rozważmy kolejność wyjścia na konsolę:
async function f() {
console.log(1); // 1
const promise = new Promise((resolve) => {
console.log(2); // 2
setTimeout(() => {
console.log(3); // 3 (około 0 ms)
resolve("gotowe!");
console.log(4); // 4
});
});
console.log(5); // 5
const result = await promise; // czekamy na rozwiązanie obietnicy
console.log(6); // 6
console.log(result); // "gotowe!"
return "Wynik";
}
f();
console.log(7); // 7
Wyjaśnienie kolejności wyjścia:
console.log(1);— synchronicznieconsole.log(2);— synchronicznie podczas tworzenia obietnicyconsole.log(5);— synchronicznie po utworzeniu obietnicyconsole.log(7);— synchronicznie po wywołaniuf()
Następnie uruchamia się setTimeout (mikrozadanie):
console.log(3);console.log(4);
Po rozwiązaniu obietnicy za pomocą resolve, przechodzi ona do stanu fulfilled, a await kontynuuje wykonywanie:
console.log(6);console.log(result);— wyświetla "gotowe!"
Całkowita kolejność wyjścia:
1
2
5
7
3
4
6
gotowe!