Throttle nedir? Debounce'tan farkı nedir? Bir throttle fonksiyonu yazın.

Cevap

  • Debounce: olaylar durduktan belirli bir süre sonra bir kez çalışır. Arama kutusu için idealdir.
  • Throttle: olaylar devam etse bile fonksiyonu belirli aralıklarla en fazla bir kez çalıştırır. Scroll, resize, mousemove gibi sürekli olaylar için uygundur.
function throttle(fn, ms) {
  let son = 0;
  let bekleyen = null;
  return function (...args) {
    const simdi = Date.now();
    const kalan = ms - (simdi - son);
    if (kalan <= 0) {
      son = simdi;
      fn.apply(this, args);
    } else if (!bekleyen) {
      bekleyen = setTimeout(() => {
        son = Date.now();
        bekleyen = null;
        fn.apply(this, args);
      }, kalan);
    }
  };
}

window.addEventListener("scroll", throttle(konumuGuncelle, 100));

Son satırdaki setTimeout, aralığın sonunda gelen son olayın da kaybolmamasını (trailing call) sağlar.

  1. var, let ve const arasındaki fark nedir?KolayJavaScriptFrontend
  2. == ile === arasındaki fark nedir?KolayJavaScriptFrontend
  3. Closure nedir? Bir örnekle açıklayın.OrtaJavaScriptFrontend
  4. Aşağıdaki kodun çıktısı nedir? (Event loop)OrtaJavaScriptFrontend
  5. this anahtar kelimesi nasıl belirlenir? Arrow function'larda ne değişir?OrtaJavaScriptFrontend
  6. Bir debounce fonksiyonu yazın.ZorJavaScriptFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle