Exécuter une fonction JavaScript une fois par intervalles de temps réguliers

Concept et utilisation

La fonction throttle() permet d'exécuter une fonction une fois par intervalles de temps réguliers.

Fonction

throttle()

Retourne une fonction pourra être invoquée par intervalles de temps réguliers.

Syntaxe
throttle(fonction, intervalle);
Paramètres
fonction(Function)

Le paramètre fonction de la fonction throttle() définit une fonction pour laquelle appliquer une limitation d'exécutions à intervalles réguliers.

intervalle(Number)

Le paramètre intervalle de la fonction throttle() définit un intervalle de temps en millisecondes durant lequel une fonction ne pourra plus être invoquée.
La valeur par défaut de l'intervalle est "250".

Exemple d'exécutions répétitives d'une fonction

var intervalle = 1000;
var fonction = function() {
  console.log(window.scrollY);
};

var fonction_throttle = throttle(fonction, intervalle);

window.addEventListener('scroll', fonction_throttle);

// renvoie la position de la barre de défilement à chaque seconde passée

Code source de la fonction

function throttle(f, d) {
  d = d || 250;
  var l, t = null;
  return function() {
    var c = this,
        a = arguments,
        n = (new Date()).getTime();
    if (l && n < l + d) {
      clearTimeout(t);
      t = setTimeout(function() {
        l = n;
        f.apply(c, a);
      }, d);
    } else {
      l = n;
      f.apply(c, a);
    }
  };
}
^