Timers queue
- Node.js kursu
- Uzman
- Ders 15/47
- 5 dk
Timers queue ve setTimeout sırasını öğrenirsin.
Timers queue
Timers queue, setTimeout ve setInterval ile kaydedilen geri çağrıların tutulduğu kuyruktur. timers fazında event loop, süresi dolan zamanlayıcıları çalıştırır. Zamanlayıcılar gecikme süresine göre sıralanır; küçük gecikme önce çalışır.
Bir timersByDelay(delays) fonksiyonu bu sıralamayı modeller: [100, 10, 50] girdisini '10,50,100' döndürür. delays.slice().sort((a, b) => a - b) ile önce diziyi kopyalar (orijinali bozmamak için), sonra sayısal olarak sıralar. .join(',') ile dize yapar. Bu, timers fazının geri çağrıları gecikmeye göre sıralı çalıştırdığını gösterir. Çıktı 10,50,100 olur; en küçük gecikme önce.
Sayısal sıralama
JavaScript sort varsayılan olarak dize sıralaması yapar; sayıları yanlış sıralar ([10, 100, 50] → [10, 100, 50]). Sayısal sıralama için bir karşılaştırıcı verirsin: (a, b) => a - b. Bu, küçükten büyüğe sıralar.
Örnek: [100, 10, 50].sort((a, b) => a - b) [10, 50, 100] verir. delays.slice() ile kopya alırız; çünkü sort diziyi yerinde değiştirir. .join(',') ile '10,50,100' dizesi elde edilir. Bu, timers fazının geri çağrıları gecikmeye göre doğru sırayla çalıştırdığını modeller. Zamanlayıcı belirsizliği yoktur; sıralama determiniktir. Çıktı 10,50,100 olur.
Uygulama Timers sıralaması yaz
function timersByDelay(delays) yaz. return delays.slice().sort((a, b) => a - b).join(',') ile döndür. console.log(timersByDelay([100, 10, 50])) yazdır.
Başlangıç kodu
// timersByDelay fonksiyonu yaz
// gecikmeleri küçükten büyüğe sırala
// virgülle birleştir ve yazdır
// [100, 10, 50] ile çağır
// buraya yazÖrnek çözüm
function timersByDelay(delays) {
return delays.slice().sort((a, b) => a - b).join(',');
}
console.log(timersByDelay([100, 10, 50]));Beklenen çıktı
10,50,100
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 sort çağrısını tamamla
return delays.slice().____((a, b) => a - b).join(',');
return delays.slice().sort((a, b) => a - b).join(',');
Açıklama: sort diziyi sıralar.
2 [100, 10, 50].sort((a, b) => a - b) ne verir?
[100, 10, 50].sort((a, b) => a - b)- [100, 50, 10]
- [10, 100, 50]
- [10, 50, 100] Doğru cevap
- [50, 10, 100]
Açıklama: a - b küçükten büyüğe: [10, 50, 100].
3 Kavramı açıklamasına eşle
| Kavram | Anlamı |
|---|---|
setTimeout |
Tek seferlik zamanlayıcı |
sort |
Diziyi sıralar |
slice |
Dizi kopyası alır |
timers fazı |
Zamanlayıcıları çalıştırır |