Microtask
- Node.js kursu
- Uzman
- Ders 14/47
- 5 dk
Microtask ve nextTick öğrenirsin.
Microtask
Microtask'ler, event loop fazları arasında çalışan küçük görevlerdir. İki türü vardır: process.nextTick ve Promise geri çağrıları. nextTick her zaman Promise'lerden önce çalışır.
Bir microtaskOrder(tasks) fonksiyonu bu önceliği modeller: ['nextTick', 'promise'] dizisini 'nextTick -> promise' dizesine çevirir. Gerçek Node.js'te her faz bitince microtask kuyruğu boşaltılır; nextTick kuyruğu önce, promise kuyruğu sonra. Bu yüzden process.nextTick(() => ...) ile Promise.resolve().then(() => ...) birlikte kullanılırsa nextTick önce çalışır. Çıktı nextTick -> promise olur; bu sıra her zaman böyledir.
nextTick önceliği
Microtask sırasını bir fonksiyonla modelleyebiliriz. microtaskOrder(['nextTick', 'promise']) 'nextTick -> promise' döndürür. Bu, nextTick'in her zaman önce çalıştığını sabit bir dizeyle gösterir.
Fonksiyon basittir: return tasks.join(' -> '). tasks dizisi zaten doğru sıradadır (nextTick önce). Çıktı nextTick -> promise olur. Gerçek Node.js'te bu sıra microtask kuyruğunun boşaltılma düzeninden gelir: nextTick kuyruğu tamamen boşaltılır, sonra promise kuyruğu. Bu model, sıralamayı deterministik bir dizeyle görselleştirir; zamanlayıcı belirsizliği yoktur. nextTick'in Promise'ten önce çalıştığı gerçeği böylece sabitlenir.
Uygulama Microtask sırasını yaz
function microtaskOrder(tasks) yaz. return tasks.join(' -> ') ile döndür. console.log(microtaskOrder(['nextTick', 'promise'])) yazdır.
Başlangıç kodu
// microtaskOrder fonksiyonu yaz
// görev dizisini ' -> ' ile birleştir
// ['nextTick', 'promise'] ile çağır, yazdır
// buraya yazÖrnek çözüm
function microtaskOrder(tasks) {
return tasks.join(' -> ');
}
console.log(microtaskOrder(['nextTick', 'promise']));Beklenen çıktı
nextTick -> promise
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Kavramı açıklamasına eşle
| Kavram | Anlamı |
|---|---|
process.nextTick |
En önce çalışan microtask |
Promise.then |
nextTick'ten sonra çalışan microtask |
Microtask |
Fazlar arasında çalışır |
Faz |
Event loop adımı |
2 join çağrısını tamamla
return tasks.____(' -> ');
return tasks.join(' -> ');
Açıklama: join diziyi dizeye birleştirir.
3 nextTick ve Promise birlikte kullanılırsa hangisi önce çalışır?
process.nextTick(() => {});
Promise.resolve().then(() => {});- Aynı anda
- Rastgele
- Promise
- nextTick Doğru cevap
Açıklama: nextTick her zaman Promise'ten önce çalışır.