Heim  >  Artikel  >  Web-Frontend  >  **Warum eliminiert die einfache JavaScript-Drosselungsfunktion die letzte Ausführung nach der Drosselungsperiode?**

**Warum eliminiert die einfache JavaScript-Drosselungsfunktion die letzte Ausführung nach der Drosselungsperiode?**

DDD
DDDOriginal
2024-10-27 00:41:30483Durchsuche

**Why does the Simple JavaScript Throttle Function Eliminate the Final Execution After the Throttle Period?**

Einfache Drosselung in JavaScript

JavaScript bietet verschiedene Tools zur Drosselung von Funktionen, einschließlich Lodash und Underscore. In Fällen, in denen diese Bibliotheken jedoch möglicherweise zu groß sind, ist eine benutzerdefinierte Drosselungsimplementierung wünschenswert.

Vorhandene Drosselungsfunktion und Herausforderungen

Die bereitgestellte Drosselungsfunktion ist funktionsfähig, aber sie funktioniert stellt ein Problem dar. Nach Ablauf der Drosselungsperiode wird die Funktion ein letztes Mal ausgeführt. Dies kann in Szenarien, in denen die Funktion nicht mehrmals ausgelöst werden sollte, zu unerwünschtem Verhalten führen.

Verbesserte Drosselfunktion

Um dieses Problem zu beheben, ziehen Sie die folgende verbesserte Drosselfunktion in Betracht eliminiert die endgültige Ausführung nach der Drosselungsperiode:

function throttle(func, wait, options) {
  var context, args, result;
  var timeout = null;
  var previous = 0;
  if (!options) options = {};
  var later = function() {
    previous = options.leading === false ? 0 : Date.now();
    timeout = null;
    result = func.apply(context, args);
    if (!timeout) context = args = null;
  };
  return function() {
    var now = Date.now();
    if (!previous && options.leading === false) previous = now;
    var remaining = wait - (now - previous);
    context = this;
    args = arguments;
    if (remaining <= 0 || remaining > wait) {
      if (timeout) {
        clearTimeout(timeout);
        timeout = null;
      }
      previous = now;
      result = func.apply(context, args);
      if (!timeout) context = args = null;
    } else if (!timeout &amp;&amp; options.trailing !== false) {
      timeout = setTimeout(later, remaining);
    }
    return result;
  };
};

Diese aktualisierte Funktion bietet einen konfigurierbaren Drosselungsmechanismus mit optionalen Parametern für die Auslösung der Vorder- und Hinterkante.

Vereinfachte Drosselungsfunktion

Wenn keine Anpassbarkeit erforderlich ist, sieht eine einfachere Drosselungsfunktion wie folgt aus:

function throttle (callback, limit) {
    var waiting = false; 
    return function () { 
        if (!waiting) { 
            callback.apply(this, arguments); 
            waiting = true; 
            setTimeout(function () { 
                waiting = false; 
            }, limit);
        }
    }
}

Diese nicht konfigurierbare Funktion drosselt die Zielfunktion auf ein bestimmtes Zeitintervall, ohne dass komplexe Optionen erforderlich sind .

Das obige ist der detaillierte Inhalt von**Warum eliminiert die einfache JavaScript-Drosselungsfunktion die letzte Ausführung nach der Drosselungsperiode?**. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn