Чӣ гуна вазифаҳои макро ва микро ҳастанд?
sobes.tech AI
Ҷавоб аз AI
Макрозадачалар — браузердің жоғары деңгейлі үлкен кезеңдері, мысалы, HTML талдауы, DOM құру, CSSOM құру, стильдерді есептеу, рендер ағашын құру, орналасу (Layout), бояу (Paint) және композиция (Composite). Олар негізгі рендерлік құбырды құрайды.
Микрозадақалар — бұл кішірек, егжей-тегжейлі әрекеттер, олар ағымдағы макрозада аяқталғаннан кейін және келесі басталмас бұрын орындалады. Оларға Promise, MutationObserver, queueMicrotask кіреді.
Негізгі айырмашылық — микрозадақалар әрқашан жылдам ағымдағы макрозададан кейін орындалады, ал келесі макрозада (мысалы, келесі рендер кадры немесе setTimeout таймер оқиғасы) тек микрозадақалар кезегі бос болғаннан кейін орындалады.
Орындау тәртібінің мысалы:
// Макрозада (бастапқы код)
console.log('Бастау');
// Макрозада (таймер)
setTimeout(() => {
console.log('Таймер');
}, 0);
// Микрозада (уәде)
Promise.resolve().then(() => {
console.log('Уәде');
});
// Макрозада (аяқталуы)
console.log('Аяқ');
Консольдегі шығу:
Бастау
Аяқ
Уәде
Таймер
Орындау тәртібі:
- Негізгі макрозада (негізгі скрипт) орындалады.
console.log('Бастау').setTimeoutмакрозадасын кезекке қояды.Promise.resolve().then()микрозадасын кезекке қояды.console.log('Аяқ').- Негізгі макрозада аяқталады.
- Микрозада кезегі тексеріледі:
Promise.resolve().then()орындалады. console.log('Уәде').- Микрозада кезегі бос.
- Браузер оқиға циклінде тапсырмаларды өңдейді, келесі макрозадаға өтеді.
setTimeoutмакрозадасы өңделеді.console.log('Таймер').- Макрозада аяқталады.
Бұл түсінік асинхронды операциялардың орындалу тәртібін басқару және Event Loop қалай жұмыс істейтінін түсіну үшін маңызды.