Sobes.tech
Middle

Milyen sorrendben jelennek meg a számok a Promise, setTimeout és szinkron kód (Event Loop) esetén?

sobes.tech MI

Válasz az MI-től

JavaScriptben a Promise, setTimeout és a szinkron kód végrehajtási sorrendje az Event Loop és a mikro- és makrofeladatok (microtasks és macrotasks) sorai által van meghatározva.

Vegyünk egy példát:

console.log('1');

setTimeout(() => {
  console.log('2');
}, 0);

Promise.resolve().then(() => {
  console.log('3');
});

console.log('4');

Magyarázat:

  • Először a teljes szinkron kód fut le, így megjelenik 1 és 4.
  • Ezután a mikrofeladatok (Promise) futnak, és megjelenik 3.
  • Ezután a makrofeladatok (setTimeout) futnak, és megjelenik 2.

A végső kimenet sorrendje: 1, 4, 3, 2.

Tehát a szinkron kód fut le elsőként, majd a mikrofeladatok (Promise), végül a makrofeladatok (setTimeout). Ez egy kulcsfontosságú pont a JavaScript Event Loop megértéséhez.