Middle+
/* Konsolda nə çıxacaq */ async function f() { console.log(1); const promise = new Promise((resolve) => { console.log(2); setTimeout(() => { console.log(3); resolve("hazır!"); console.log(4); }); }); console.log(5); const result = await promise; console.log(6); console.log(result); return "Nəticə"; } f(); console.log(7);
sobes.tech Süni İntellekt
AI-dan cavab
Konsolda çıxış ardıcıllığını nəzərdən keçirək:
async function f() {
console.log(1); // 1
const promise = new Promise((resolve) => {
console.log(2); // 2
setTimeout(() => {
console.log(3); // 3 (təqribən 0 ms)
resolve("hazır!");
console.log(4); // 4
});
});
console.log(5); // 5
const result = await promise; // vədin həll olunmasını gözləyirik
console.log(6); // 6
console.log(result); // "hazır!"
return "Nəticə";
}
f();
console.log(7); // 7
Çıxış ardıcıllığını izah edək:
console.log(1);— sinxronconsole.log(2);— vədin yaradılarkən sinxronconsole.log(5);— vədi yaratdıqdan sonra sinxronconsole.log(7);—f()çağırışından sonra sinxron
Sonra setTimeout (mikrotask) işə düşür:
console.log(3);console.log(4);
Vədi resolve ilə həll etdikdən sonra, o fulfilled vəziyyətə keçir və await icraata davam edir:
console.log(6);console.log(result);— "hazır!" göstərir
Ümumilikdə çıxış ardıcıllığı:
1
2
5
7
3
4
6
hazır!