Microtask ve macrotask nedir? requestAnimationFrame bu sıranın neresindedir?
Cevap
Event loop her turda şunu yapar: call stack boşalınca bir macrotask çalıştırır, ardından tüm microtask kuyruğunu boşaltır, gerekiyorsa sayfayı yeniden çizer.
- Macrotask:
setTimeout,setInterval, I/O, kullanıcı olayları,MessageChannel - Microtask: Promise callback'leri (
then,awaitsonrası),queueMicrotask,MutationObserver - requestAnimationFrame: bir sonraki ekran çizimi (render) öncesinde çalışır, tipik olarak saniyede 60 kez. Animasyonlar için
setTimeoutyerine kullanılmalıdır.
setTimeout(() => console.log("macrotask"));
Promise.resolve().then(() => console.log("microtask"));
requestAnimationFrame(() => console.log("raf"));
console.log("senkron");
// senkron → microtask → (raf ve macrotask: tarayıcıya göre) …Sonsuz microtask üreten kod (sürekli kendini tekrar eden then) render'ı ve macrotask'ları açlıkta bırakıp sayfayı dondurabilir.
İlgili JavaScript soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.