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.
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.
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.
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.
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
Junior Frontend Developer 2026
Was du wirklich wissen musst, um 2026 einen Junior-Frontend-Job zu bekommen, und was warten kann – abgeleitet aus echten Stellenanzeigen.
SQL oder NoSQL?
Beantworte sechs Fragen, und ich sage dir, welche Art von Datenbank zu deinem Projekt passt und warum.
Als Nächstes lesen
- CZDEDer Datenbank-Killer: Was ist das N+1-Query-Problem und wie behebst du es mit Eager Loading
Der Datenbank-Killer: Was ist das N+1-Query-Problem und wie behebst du es mit Eager Loading
20. Oktober 2026 · 3 Min. Lesezeit - CZDE8 kostenlose Websites, die du dir merken solltest
8 kostenlose Websites, die du dir merken solltest
20. September 2026 · 1 Min. Lesezeit