Middle
Kas yra makro ir mikro užduotys?
sobes.tech AI
Atsakymas iš AI
Mikrozadavinės — tai smulkesni, detalesni veiksmai, atliekami po dabartinės makrozadavinės pabaigos ir prieš pradedant kitą. Jie apima Promise apdorojimą, MutationObserver, queueMicrotask.
Pagrindinis skirtumas tas, kad mikrozadavinės visada vykdomos iš karto po dabartinės makrozadavinės, o kita makrozadavinė (pavyzdžiui, kitame atnaujinimo kadre arba setTimeout) vykdoma tik tada, kai mikrozadavinės eilė yra tuščia.
Vykdymo tvarka pavyzdyje:
// Makrozadavinė (pradinis kodas)
console.log('Pradžia');
// Makrozadavinė (laikmatis)
setTimeout(() => {
console.log('Laikmatis');
}, 0);
// Mikrozadavinė (promisas)
Promise.resolve().then(() => {
console.log('Promisas');
});
// Makrozadavinė (pabaiga pradinių kodo)
console.log('Pabaiga');
Konsolės išvestis:
Pradžia
Pabaiga
Promisas
Laikmatis
Vykdymo tvarka:
- Pradžioje vykdoma pagrindinė makrozadavinė.
console.log('Pradžia').setTimeoutįkelia makrozadavinę į eilę.Promise.resolve().then()įkelia mikrozadavinę į eilę.console.log('Pabaiga').- Pagrindinė makrozadavinė baigta.
- Tikrinama mikrozadavinės eilė ir vykdoma
Promise.resolve().then(). console.log('Promisas').- Mikrozadavinės eilė tuščia.
- Naršyklė apdoroja įvykių ciklą ir pereina prie kitos makrozadavinės.
- Vykdoma
setTimeoutmakrozadavinė. console.log('Laikmatis').- Makrozadavinė baigta.
Šis supratimas yra svarbus asinchroninių operacijų vykdymo tvarkos valdymui ir Event Loop darbo supratimui.