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'— szinkron kód'4'— szinkron kód'3'— mikrofeladat (promise) a szinkron kód után'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.