CodeBlanks Logo Icon CodeBlanks

Timers queue

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

index.js
// 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

index.js
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

Soru
return delays.slice().____((a, b) => a - b).join(',');
Cevap
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?

index.js
[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

Uzman bölümündeki tüm dersler