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 AI
Απάντηση από AI
Ας εξετάσουμε τη σειρά εξόδου στην κονσόλα:
async function f() {
console.log(1); // 1
const promise = new Promise((resolve) => {
console.log(2); // 2
setTimeout(() => {
console.log(3); // 3 (περίπου 0 ms)
resolve("έτοιμο!");
console.log(4); // 4
});
});
console.log(5); // 5
const result = await promise; // περιμένουμε την επίλυση της υπόσχεσης
console.log(6); // 6
console.log(result); // "έτοιμο!"
return "Αποτέλεσμα";
}
f();
console.log(7); // 7
Εξήγηση της σειράς εξόδου:
console.log(1);— συγχρονικάconsole.log(2);— συγχρονικά κατά τη δημιουργία της υπόσχεσηςconsole.log(5);— συγχρονικά μετά τη δημιουργία της υπόσχεσηςconsole.log(7);— συγχρονικά μετά την κλήση τηςf()
Στη συνέχεια ενεργοποιείται το setTimeout (microtask):
console.log(3);console.log(4);
Μετά την επίλυση της υπόσχεσης με resolve, περνάει στην κατάσταση fulfilled και το await συνεχίζει την εκτέλεση:
console.log(6);console.log(result);— εμφανίζει "έτοιμο!"
Ο συνολικός πίνακας εξόδου είναι:
1
2
5
7
3
4
6
έτοιμο!