Middle+
/* Mit fog megjelenni a konzolon */ async function f() { console.log(1); const promise = new Promise((resolve) => { console.log(2); setTimeout(() => { console.log(3); resolve("kész!"); console.log(4); }); }); console.log(5); const result = await promise; console.log(6); console.log(result); return "Eredmény"; } f(); console.log(7);
sobes.tech MI
Válasz az MI-től
Tekintsük át a konzol kimenetének sorrendjét:
async function f() {
console.log(1); // 1
const promise = new Promise((resolve) => {
console.log(2); // 2
setTimeout(() => {
console.log(3); // 3 (körülbelül 0 ms)
resolve("kész!");
console.log(4); // 4
});
});
console.log(5); // 5
const result = await promise; // várjuk a promise megoldását
console.log(6); // 6
console.log(result); // "kész!"
return "Eredmény";
}
f();
console.log(7); // 7
A kiírás sorrendjének magyarázata:
console.log(1);— szinkronconsole.log(2);— szinkron a promise létrehozásakorconsole.log(5);— szinkron a promise létrehozása utánconsole.log(7);— szinkron af()hívása után
Ezután a setTimeout (mikrofeladat) aktiválódik:
console.log(3);console.log(4);
A promise megoldódik a resolve által, és átmegy a fulfilled állapotba, ekkor a await folytatódik:
console.log(6);console.log(result);— kiírja "kész!"
Az összesített kiírás sorrendje:
1
2
5
7
3
4
6
kész!