Sobes.tech
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 1 ir 4.
  • 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.