Konuyu Açan
#0
Microtask ve macrotask terimleri, JavaScript'in event loop mekanizmasında kritik bir rol oynamaktadır. Bu iki kavram, asenkron programlama açısından önemli bir ayrım sunar. Bu yazıda, her iki terimi detaylı bir şekilde ele alarak, işleyişlerini ve aralarındaki farkları açıklayacağım.
Microtask, genellikle
Bu örnekte, "Synchronous Task" yazdırıldıktan sonra, microtask sıraya alınan "Microtask" mesajı yazdırılacaktır.
Macrotask ise, genellikle
Bu örnekte de "Synchronous Task" yazdırıldıktan sonra, macrotask sıraya alınan "Macrotask" mesajı yazdırılacaktır.
Özetle, JavaScript'teki asenkron işlemler, microtask ve macrotask olarak iki ana kategoriye ayrılır. Microtask'ler, daha yüksek önceliğe sahip iş parçacıklarıdır ve mevcut işlemler tamamlandıktan hemen sonra çalıştırılırken, macrotask'ler bir sonraki event loop döngüsü içerisinde ele alınır. Bu iki mekanizmanın doğru anlaşılması, JavaScript geliştirme sürecinde daha verimli ve etkili kod yazımına olanak tanır.
Microtask, genellikle
Promise nesneleri ile ilişkilidir. Bir microtask, bir .then() veya .catch() gibi Promise metodları kullanıldığında yürütülen iş parçacığıdır. Microtask'ler, event loop'un bir döngüsü tamamlandıktan sonra, mevcut call stack'te kalan tüm işlemler tamamlandıktan sonra çalıştırılır. Bu, microtask'lerin, mevcut işlemlerin hemen ardından çalıştırılmasını sağlar ve bu da performans açısından oldukça verimlidir. Örneğin:CODE
12345
Promise.resolve().then(() => {
console.log('Microtask');
});
console.log('Synchronous Task');
Bu örnekte, "Synchronous Task" yazdırıldıktan sonra, microtask sıraya alınan "Microtask" mesajı yazdırılacaktır.
Macrotask ise, genellikle
setTimeout, setInterval gibi zamanlayıcı fonksiyonlar veya I/O işlemleri ile ilişkilidir. Macrotask'ler, event loop'un bir döngüsü içinde ele alınır ve her döngüde sadece bir macrotask çalıştırılır. Bu, macrotask'lerin microtask'lere göre daha düşük bir önceliğe sahip olduğu anlamına gelir. Örneğin:CODE
12345
setTimeout(() => {
console.log('Macrotask');
}, 0);
console.log('Synchronous Task');
Bu örnekte de "Synchronous Task" yazdırıldıktan sonra, macrotask sıraya alınan "Macrotask" mesajı yazdırılacaktır.
Özetle, JavaScript'teki asenkron işlemler, microtask ve macrotask olarak iki ana kategoriye ayrılır. Microtask'ler, daha yüksek önceliğe sahip iş parçacıklarıdır ve mevcut işlemler tamamlandıktan hemen sonra çalıştırılırken, macrotask'ler bir sonraki event loop döngüsü içerisinde ele alınır. Bu iki mekanizmanın doğru anlaşılması, JavaScript geliştirme sürecinde daha verimli ve etkili kod yazımına olanak tanır.