Heim > Web-Frontend > js-Tutorial > Hauptteil

Hier sind einige fragenbasierte Titel, die zum Inhalt Ihres Artikels passen: * **Wie kann ich einfache Drosselung in JavaScript implementieren?** * **Was ist der beste Weg, eine JavaScript-Funktion zu drosseln?** *

Mary-Kate Olsen
Freigeben: 2024-10-25 08:54:28
Original
854 Leute haben es durchsucht

Here are a few question-based titles that fit the content of your article:

* **How Can I Implement Simple Throttling in JavaScript?** 
* **What's the Best Way to Throttle a JavaScript Function?**
* **Need to Prevent Overwhelm? Here's How to Throttle Yo

Einfache Drosselung in JavaScript

In JavaScript ist Drosselung eine Technik, um die Ausführung einer Funktion auf ein bestimmtes Zeitintervall zu beschränken. Dies ist nützlich, wenn Sie vermeiden möchten, das System mit übermäßigen Funktionsaufrufen zu überlasten.

Vorhandene Drosselungsimplementierungen

Bibliotheken wie lodash und underscore bieten integrierte Drosselungsfunktionen. Das Einbeziehen dieser gesamten Bibliotheken für eine einfache Aufgabe kann jedoch überflüssig sein.

Eine benutzerdefinierte Drosselfunktion

Hier ist eine benutzerdefinierte Drosselfunktion, die als eigenständige Lösung verwendet werden kann:

<code class="javascript">function throttle(fn, threshhold, scope) {
  threshhold || (threshhold = 250);
  var last,
      deferTimer;
  return function () {
    var context = scope || this;

    var now = +new Date,
        args = arguments;
    if (last &amp;&amp; now < last + threshhold) {
      // hold on to it
      clearTimeout(deferTimer);
      deferTimer = setTimeout(function () {
        last = now;
        fn.apply(context, args);
      }, threshhold);
    } else {
      last = now;
      fn.apply(context, args);
    }
  };
}
Nach dem Login kopieren

Verbesserung: Vermeidung doppelter Ausführung

Der bereitgestellte Code weist jedoch ein Problem auf, bei dem er die Funktion möglicherweise erneut auslöst, sobald das Drosselungsintervall abgelaufen ist. Um dieses Problem zu beheben, können wir die Funktion wie folgt ändern:

<code class="javascript">function throttle(fn, threshhold, scope) {
  threshhold || (threshhold = 250);
  var last,
      deferTimer;
  return function () {
    var context = scope || this;

    var now = +new Date;
    if (now < last + threshhold) {
      return; // prevent subsequent execution
    }

    last = now;
    fn.apply(context, arguments);
  };
}
Nach dem Login kopieren

Erweiterte Drosselfunktion

Für mehr Flexibilität und zusätzliche Optionen können Sie sich auf die folgende Implementierung beziehen :

<code class="javascript">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 &amp;&amp; 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;
  };
};</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonHier sind einige fragenbasierte Titel, die zum Inhalt Ihres Artikels passen: * **Wie kann ich einfache Drosselung in JavaScript implementieren?** * **Was ist der beste Weg, eine JavaScript-Funktion zu drosseln?** *. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!