Detaillierte Erklärung zu JavaScript Anti-Shake und Throttling

Detaillierte Erklärung zu JavaScript Anti-Shake und Throttling

Entprellen

Definition: Bei Ereignissen, die innerhalb eines kurzen Zeitraums kontinuierlich ausgelöst werden, z. B. Bildlaufereignisse, bedeutet Anti-Shake, dass die Ereignisverarbeitungsfunktion innerhalb einer bestimmten Zeitspanne nur einmal ausgeführt wird.

Nehmen wir zum Thema Verwacklungsschutz das Beispiel, mit dem Finger auf eine Feder zu drücken. Drücken Sie mit dem Finger auf die Feder und halten Sie den Druck aufrecht. Die Feder wird nicht zurückfedern, bis Sie den Finger loslassen.

Beispiel für die Größenänderung:

Funktion Entprellung(fn, warten){
    var Timer = null;
    Rückkehr ()=>{
        wenn(timer !== null){
            Zeitüberschreitung löschen(Timer);
        }
        Timer = setzeTimeout(fn, warte);
    }
}
Funktion handle(){
    Konsole.log(Math.random());
}
window.addEventListener("Größe ändern",Entprellung(Handle, 1000));

Das Obige ist die Version mit nicht sofortiger Ausführung

Version mit sofortiger Ausführung

Funktion Entprellung(fn, warten){
	lass timeid, flag = true;
	zurückgeben () => {
		Zeitüberschreitung löschen (Zeit-ID);
		wenn(Flagge){
			fn();
			Flagge = falsch;
		}anders{
			Zeit-ID = setzeTimeout(()=>{
				Flagge = wahr;
			}, Warten);
		}
	}
}

Das Ziehen des Browserfensters löst die Größenänderung aus, die Handle-Funktion wird zu diesem Zeitpunkt jedoch nicht ausgelöst. Der Timer beginnt zu zählen. Wenn die Größenänderung innerhalb der Zeit erneut ausgelöst wird, startet der Timer erneut. Dies hat den Vorteil, dass das Ziehen des Browserfensters zum Auslösen der Größenänderung die Handle-Funktion nicht häufig ausführt, sondern nur bei Bedarf ausgeführt werden kann, wodurch Redundanz effektiv vermieden wird.

Gängige Schreibmethoden:

const Entprellung = (Funktion, Verzögerung = 200) => {
  let timeout = null
  Rückgabefunktion () {
    Zeitüberschreitung löschen (Zeitüberschreitung)
    Zeitüberschreitung = setzeZeitüberschreitung(() => {
      func.apply(diese, Argumente)
    }, Verzögerung)
  }
}

Gaspedal

Definition : Lassen Sie das Ereignis innerhalb eines bestimmten Zeitraums nur einmal ausführen.

Die ursprüngliche Absicht besteht darin, dass es wie das Tropfen von Wasser aus einem Wasserhahn ist und nur einmal innerhalb einer bestimmten Zeit ausgeführt wird, um häufige und wiederholte Ausführungen zu reduzieren.

Wie etwa ein Suchfeld-Eingabeereignis.

Berechnen nach Zeitstempel:

Funktion Drosselklappe(fn,warten){
  lass startTime = 0;
  Rückgabefunktion(){
    let endTime = Date.now();
    wenn(Endzeit-Startzeit>warten){
      fn();
      Startzeit = Endzeit;
    }
  }
}

Nach Timer:

Funktion Drosselklappe(fn,warten){
  lass timeid = null;
  Rückgabefunktion(){
    wenn(!timeid){
       Zeit-ID = setzeTimeout(Funktion(){
         fn();
         Zeit-ID = null;
       },Warten)
    }
  }
}

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können!

Das könnte Sie auch interessieren:
  • Analyse der Anti-Shake-Drosselungsfunktion von JavaScript
  • Was ist JavaScript Anti-Shake und Throttling
  • Eine kurze Diskussion über JavaScript-Drosselung und Anti-Shake
  • Erläuterung zu JavaScript-Anti-Shake und -Throttling
  • Kennen Sie die Anti-Shake- und Throttling-Funktionen von JavaScript?

<<:  Docker-Zeitzonenproblem und Datenmigrationsproblem

>>:  XHTML-Tutorial: XHTML-Grundlagen für Anfänger

Artikel empfehlen

Beispiel für ein WeChat-Applet zum Erzielen des rotierenden Laterneneffekts

Vorwort In der täglichen Entwicklung stoßen wir h...

JS implementiert Karussell mit mehreren Tabs

Karussell-Animationen können das Erscheinungsbild...

Anwendungsbeispiele für den Mysql Inner Join (unbedingt lesen)

Grammatikregeln SELECT Spaltenname(n) FROM Tabell...

Verwenden Sie reines CSS, um das A-Tag in HTML ohne JavaScript zu deaktivieren

Tatsächlich ist dieses Problem bereits aufgetreten...

Einführung in mögliche Probleme nach der Installation von Tomcat

1. Der Tomcat-Dienst ist nicht geöffnet Geben Sie...

JavaScript zum Erzielen eines Klickbild-Flip-Effekts

Ich habe kürzlich an einem Projekt zur Gesichtser...

Tutorial zur HTML-Tabellenauszeichnung (48): CSS-modifizierte Tabelle

<br />Sehen wir uns nun an, wie Sie die CSS-...

Ideen und Codes zur Implementierung des Wasserfall-Flow-Layouts im UniApp-Applet

1. Einleitung Gilt es als Aufwärmen alter Themen,...

So ändern Sie den Bildlaufleistenstil in Vue

Inhaltsverzeichnis Zunächst müssen Sie wissen, da...

10 Fähigkeiten, die Frontend-Entwickler millionenschwer machen

Die Fähigkeiten, die Front-End-Entwickler beherrs...

JavaScript zum Erzielen eines Lupeneffekts

In diesem Artikel wird der spezifische Code für J...

MySQL count: ausführliche Erklärung und Funktionsbeispielcode

Detaillierte Erklärung der MySQL-Anzahl Die Funkt...

Ein Artikel zum Verständnis der Verwendung von typeof in js

Inhaltsverzeichnis Base Rückgabetyp String und Bo...