Artikel

Was ist der Unterschied zwischen Debounce und Throttle?

Wer „istanbul“ in ein Suchfeld tippt, schickt 8 Anfragen an den Server. Bei 10.000 Nutzern sind das 80.000 Anfragen. Debounce reduziert das auf 1, Throttle auf 4 – aber die beiden sind nicht dasselbe, und die richtige Wahl zählt.

Furkan Özay15. September 2026 · 2 Min. Lesezeit
czCZAY.DEV // EDITORIALDE
JAVASCRIPT CORE

#JavaScript · 2 MIN LESEZEIT

FURKAN ÖZAYVOL. 2026 // #6450
JS

Du tippst „istanbul“ in ein Suchfeld. Acht Buchstaben, acht einzelne keyup-Events – und acht einzelne API-Anfragen. Der Nutzer hat einmal gesucht, aber du hast den Server achtmal abgefragt.

Die Rechnung

Multipliziere das mit zehntausend Nutzern: achtzigtausend Anfragen. Sechs von sieben davon landen im Müll, noch bevor die Antwort ankommt, weil der Nutzer weitergetippt hat.

Debounce: auf das letzte Event warten

Debounce setzt den Timer bei jedem Aufruf zurück. Kommt innerhalb der festgelegten Zeit (sagen wir 300 ms) kein neuer Auslöser, wird die letzte Anfrage genau einmal abgeschickt.

JavaScript
function debounce(fn, delay = 300) {
  let timer;
  return (...args) => {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), delay);
  };
}
 
const search = debounce((query) => fetch(`/api/search?q=${query}`));

Aus acht Tastenanschlägen wird eine einzige Anfrage, sobald der Nutzer aufhört zu tippen.

Throttle: in regelmäßigen Abständen auslösen

Throttle wartet nicht. Es erlaubt die Ausführung höchstens einmal innerhalb des festgelegten Intervalls (sagen wir 300 ms) und verschluckt alle Events, die dazwischen eintreffen.

JavaScript
function throttle(fn, interval = 300) {
  let last = 0;
  return (...args) => {
    const now = Date.now();
    if (now - last >= interval) {
      last = now;
      fn(...args);
    }
  };
}

Debounce interessiert sich für das letzte Event, Throttle für den regelmäßigen Takt.

Interaktives Labor

Tippen und live vergleichen: Raw vs. Throttle vs. Debounce

Tippe schnell in das Feld unten (z. B. "istanbul"). Sieh in Echtzeit, wie viele Server-Anfragen jede Strategie auslöst.

Raw (jede Taste)0 Anfragen
Noch kein Ereignis ausgelöst
Throttle (300 ms)0 Anfragen
Noch kein Ereignis ausgelöst
Debounce (300 ms)0 Anfragen
Noch kein Ereignis ausgelöst

Was wann passt

Eine einfache Faustregel, damit du die beiden nicht verwechselst: Wenn du auf das Endergebnis warten kannst, nimm Debounce – Sucheingaben, Formularvalidierung, Autosave. Wenn du einen laufenden Strom von Events ausdünnen musst, nimm Throttle – Scroll-Listener, Fenstergrößenänderung, Mausbewegung.

Tipp: Bonus: die vorherige Anfrage abbrechen

Wenn du React verwendest, kombiniere Debounce mit AbortController und brich die vorherige Anfrage ab, sobald du eine neue auslöst. So überschreibt selbst bei einem langsamen Netzwerk keine veraltete Antwort dein aktuelles Ergebnis.

Fazit

Für beides brauchst du keine Bibliothek; eine Funktion mit acht Zeilen reicht. Entscheidend ist nur, zu wissen, was wohin gehört.

Interaktive Roadmap & Tool

Als Nächstes lesen