Sobes.tech
Middle

Feladat a console.log hívási sorrendjéről: rendezze a naplók kimeneti sorrendjét (1. rész — szinkron kód, 2. rész — aszinkron kód, promise-ok és setTimeout).

sobes.tech MI

Válasz az MI-től

Tekintsük át a console.log kimenet sorrendjét két részre bontva:

1. rész — szinkron kód

Minden console.log szekvenciálisan hajtódik végre a megírt sorrendben.

console.log('1');
console.log('2');
console.log('3');
// Kimenet: 1, 2, 3

2. rész — aszinkron kód, promise-ok és setTimeout

Példa:

console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve().then(() => console.log('3'));
console.log('4');

Kimeneti sorrend:

  1. '1' — szinkron kód
  2. '4' — szinkron kód
  3. '3' — mikrofeladat (promise) a szinkron kód után
  4. '2' — makrofeladat (setTimeout) a mikrofeladatok után

Eredmény: 1, 4, 3, 2

Ez azért van, mert a mikrofeladatok (promise-ok) az aktuális hívási verem után azonnal végrehajtódnak, míg a makrofeladatok (setTimeout) később.