Makro ve mikro görevler nelerdir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Makro görevler, HTML ayrıştırma, DOM oluşturma, CSSOM oluşturma, stillerin hesaplanması, render ağacı oluşturma, düzen (Layout), boyama (Paint) ve bileşim (Composite) gibi tarayıcı işlemlerinin büyük, yüksek seviyeli aşamalarıdır. Bunlar ana render hattını oluştururlar.
Micro görevler, mevcut makro görevin tamamlanmasından sonra ve bir sonraki görevin başlamasından önce gerçekleştirilen daha küçük, detaylı işlemlerdir. Bunlara Promise, MutationObserver, queueMicrotask gibi işlemler dahildir.
Ana fark, micro görevlerin her zaman hemen mevcut makro görevden sonra yürütülmesi, bir sonraki makro görevin (örneğin, bir sonraki render çerçevesi veya setTimeout zamanlayıcı olayı) ise, micro görevler kuyruğu boş olduktan sonra yürütülmesidir.
Yürütme sırasına örnek:
// Makro görev (başlangıç kodu)
console.log('Başlangıç');
// Makro görev (zamanlayıcı)
setTimeout(() => {
console.log('Zamanlayıcı');
}, 0);
// Micro görev (promis)
Promise.resolve().then(() => {
console.log('Promis');
});
// Makro görev (bitiş)
console.log('Bitiş');
Konsolda çıktı:
Başlangıç
Bitiş
Promis
Zamanlayıcı
Yürütme sırası:
- Başlangıç makro görevi (ana script) çalıştırılır.
console.log('Başlangıç').setTimeoutmakro görevi kuyruğa ekler.Promise.resolve().then()mikro görevi kuyruğa ekler.console.log('Bitiş').- Ana makro görev biter.
- Mikro görevler kuyruğu kontrol edilir:
Promise.resolve().then()çalıştırılır. console.log('Promis').- Mikro görevler kuyruğu boş.
- Tarayıcı olay döngüsünde görevleri işler, bir sonraki makro göreve geçer.
setTimeoutmakro görevi işlenir.console.log('Zamanlayıcı').- Makro görev biter.
Bu anlayış, asenkron işlemlerin yürütülme sırasını yönetmek ve Event Loop'un nasıl çalıştığını anlamak için önemlidir.