Throttle

JavaScript 🟡 Mid

Définition

Limite l'exécution d'une fonction a maximum une fois par intervalle de temps. Contrairement au debounce, garantit une exécution régulière pendant une rafale d'appels.

Analogie

Un robinet a débit contrôle : même si tu l'ouvres a fond, l'eau coule toujours a la même vitesse.

Exemple de code

function throttle(fn, ms) {
  let last = 0;
  return function(...args) {
    const now = Date.now();
    if (now - last >= ms) {
      last = now;
      fn.apply(this, args);
    }
  };
}

Cas d'usage

Scroll handler, mousemove tracking, rate limiting d'appels API cote client.

#core#performance#pattern#interview

En entretien

  1. Quelle différence entre throttle et debounce ?

    Le throttle limite l'exécution à maximum une fois par intervalle de temps et garantit une exécution régulière pendant une rafale d'appels, alors que le debounce n'exécute que le dernier appel après une pause. On choisit throttle pour un scroll handler ou du mousemove tracking, où on veut un retour régulier.

  2. Donne un cas d'usage du throttle côté API.

    Le rate limiting d'appels API côté client, pour éviter de spammer un serveur pendant une interaction continue comme un scroll. Comme un robinet à débit contrôlé, le flux reste constant même si l'utilisateur sollicite plus vite.

Dans l'actu

  • 22/09 Node.js 26.10.0 (Current) ajoute util.debounce() et util.throttle() natifs, crypto.parsePKCS12() pour lire les certificats .pfx/.p12, fs.openAsBlobSync(), et le transfert de net.BoundSocket vers les worker threads et processus enfants. Semaine 39 · 21 – 27 septembre 2026 →
  • 22/09 Node.js 26.10.0 apporte `util.debounce()` et `util.throttle()` natifs, `crypto.parsePKCS12()` pour les certificats .pfx/.p12 et `fs.openAsBlobSync()`. Bilan septembre 2026 →

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre