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 && 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!