Middle
Kokiu būdu skaičiai bus išvedami kode su Promise, setTimeout ir sinchroniniu kodu (Event Loop)?
sobes.tech AI
Atsakymas iš AI
JavaScript'e Promise, setTimeout ir sinchroninio kodo vykdymo tvarka yra nustatoma pagal Event Loop ir mikro- bei makro užduočių (microtasks ir macrotasks) eilutes.
Pažiūrėkime pavyzdį:
console.log('1');
setTimeout(() => {
console.log('2');
}, 0);
Promise.resolve().then(() => {
console.log('3');
});
console.log('4');
Paaiškinimas:
- Pirmiausia vykdomas visas sinchroninis kodas, todėl išvedami
1ir4. - Tada vykdomi mikro užduotys (Promise), išvedama
3. - Po to vykdomi makro užduotys (setTimeout), išvedama
2.
Galutinis išvesties tvarkaraštis: 1, 4, 3, 2.
Taigi, sinchroninis kodas vykdomas pirmas, po to mikro užduotys (Promise), ir galiausiai makro užduotys (setTimeout). Tai yra svarbus punktas, norint suprasti JavaScript Event Loop.