Šta su makro i mikro zadaci?
sobes.tech АИ
Одговор од АИ
Makro zadaci su veliki, visokorazredni stadiji rada pregledača, kao što su parsiranje HTML-a, izgradnja DOM-a, izgradnja CSSOM-a, računanje stilova, izgradnja render stabla, layout, bojenje (Paint) i kompozicija (Composite). Oni formiraju glavni lanac renderovanja.
Mikro zadaci su manje, detaljnije akcije koje se izvršavaju nakon završetka trenutnog makro zadatka i pre početka sledećeg. Oni uključuju obradu obećanja (Promise), MutationObserver, queueMicrotask.
Ključna razlika je u tome što mikro zadaci uvek izvršavaju odmah nakon trenutnog makro zadatka, dok se sledeći makro zadatak (npr. sledeći okvir renderovanja ili obrada događaja tajmera setTimeout) izvršava tek nakon što je red mikro zadataka prazan.
Primer reda izvršavanja:
// Makro zadatak (početni kod)
console.log('Početak');
// Makro zadatak (tajmer)
setTimeout(() => {
console.log('Tajmer');
}, 0);
// Mikro zadatak (obećanje)
Promise.resolve().then(() => {
console.log('Obećanje');
});
// Makro zadatak (kraj početnog koda)
console.log('Kraj');
Izlaz u konzoli:
Početak
Kraj
Obećanje
Tajmer
Red izvršavanja:
- Izvršava se početni makro zadatak (glavni skript).
console.log('Početak').setTimeoutstavlja makro zadatak u red.Promise.resolve().then()stavlja mikro zadatak u red.console.log('Kraj').- Glavni makro zadatak je završen.
- Proverava se red mikro zadataka: izvršava se
Promise.resolve().then(). console.log('Obećanje').- Red mikro zadataka je prazan.
- Pregledač obrađuje zadatke u petlji događaja, prelazi na sledeći makro zadatak.
- Obradjuje se makro zadatak iz
setTimeout. console.log('Tajmer').- Makro zadatak je završen.
Ovo razumevanje je važno za upravljanje redosledom izvršavanja asinhronih operacija i razumevanje kako funkcioniše Event Loop.