Vue2.x - Beispiel für die Verwendung von Anti-Shake und Throttling

Vue2.x - Beispiel für die Verwendung von Anti-Shake und Throttling

Dienstprogramme:

// Anti-Shake-Export const debounce = (func, wait = 3000, immediate = true) => {
 lass timeout = null;
 return Funktion() {
  lass Kontext = dies;
  lass args = Argumente;
  wenn (Zeitüberschreitung) Zeitüberschreitung löschen (Zeitüberschreitung);
  wenn (sofort) {
   var callNow = !timeout; //Der erste Klick ist true, der zweite Klick innerhalb der Zeit ist false und der erste Klick wird wiederholt, wenn die Zeit abgelaufen ist timeout = setTimeout(() => {
    Zeitüberschreitung = null;
   }, warten); //Timer-ID
   wenn (Jetzt anrufen) func.apply(Kontext, Argumente);
  } anders {
   Zeitüberschreitung = Zeitüberschreitung festlegen (Funktion () {
    func.apply(Kontext, Argumente);
   }, Warten);
  }
 };
};
// Zeitstempelschema export const throttleTime = (fn, wait = 2000) => {
 var pre = Date.now();
 return Funktion() {
  var Kontext = dies;
  var args = Argumente;
  var jetzt = Date.jetzt();
  wenn (jetzt - vor >= warten) {
   fn.apply(Kontext, Argumente);
   vor = Date.now();
  }
 };
};
// Timer-Lösung export const throttleSetTimeout = (fn, wait = 3000) => {
 var Timer = null;
 return Funktion() {
  var Kontext = dies;
  var args = Argumente;
  wenn (!timer) {
   Timer = setzeTimeout(Funktion() {
    fn.apply(Kontext, Argumente);
    Zeitgeber = null;
   }, Warten);
  }
 };
};

Verwendung in Vue:

<Vorlage>
 <div Klasse="Haupt">
  <p>Anti-Shake wird sofort ausgeführt</p>
  <button @click="click1">Klick</button>

  <br />

  <p>Anti-Shake wird nicht sofort ausgeführt</p>
  <button @click="click2">Klick</button>

  <br />

  <p>Drosselungs-Zeitstempelschema</p>
  <button @click="click3">Klick</button>

  <br />

  <p>Drosselungstimer-Lösung</p>
  <button @click="click4">Klick</button>
 </div>
</Vorlage>

<Skript>
importiere { Entprellung, Drosselzeit, Drosselzeitsettimeout } aus './utils';
Standard exportieren {
 Methoden: {
  Klick1: Entprellung(
   Funktion() {
    console.log('Anti-Shake wird sofort ausgeführt');
   },
   2000,
   WAHR
  ),
  Klick2: Entprellung(
   Funktion() {
    console.log('Anti-Shake wird nicht sofort ausgeführt');
   },
   2000,
   FALSCH
  ),
  Klick3: Drosselzeit(Funktion() {
   console.log('Drosselungs-Zeitstempelschema');
  }),
  Klick4: DrosselklappenTimeoutSetzen(Funktion() {
   console.log('Drosselungs-Timer-Schema');
  })
 },
};
</Skript>

<style scoped lang="scss">
* {
 Rand: 0;
 Schriftgröße: 20px;
 Benutzerauswahl: keine;
}
.hauptsächlich {
 Position: absolut;
 links: 50%;
 transformieren: übersetzenX(-50%);
 Breite: 500px;
}
Taste {
 Rand unten: 100px;
}
</Stil>

erklären:

Bildstabilisierung:

Version mit sofortiger Ausführung: Wenn „sofort“ wahr ist, wird der Befehl beim ersten Klicken ausgeführt und beim erneuten Klicken nicht ausgeführt. Nach Ablauf der Wartezeit wird der nächste Klick wirksam, d. h. er wird nur beim ersten Mal ausgeführt.

Prinzip:

Wenn Sie zum ersten Mal klicken, ist timeoutID nicht vorhanden und callNow ist wahr, sodass der Zielcode sofort ausgeführt wird. Wenn Sie zum zweiten Mal klicken, ist timeoutID vorhanden und callNow ist falsch, sodass der Zielcode nicht ausgeführt wird. Wenn die Wartezeit abgelaufen ist, wird timeoutID auf null gesetzt und die Logik zur sofortigen Ausführung beginnt sich zu wiederholen.

Version mit nicht sofortiger Ausführung: Wenn „sofort“ falsch ist, wird der erste Klick nicht ausgeführt. Die Ausführung wird nach Ablauf der Wartezeit wirksam. Das heißt, unabhängig davon, wie oft Sie klicken, wird nur das letzte Klickereignis ausgeführt.

Prinzip:

Verwenden Sie setTimeout, um die Ausführung eines Ereignisses zu verzögern. Wenn es mehrmals ausgelöst wird, löschen Sie den zuletzt ausgeführten Code und starten Sie die Zeitmessung neu. Wenn während der Zeitmessung kein Ereignis ausgelöst wird, führen Sie den Zielcode aus.

Drosselung:

Führen Sie den Zielcode mit der Wartefrequenz aus, wenn das Ereignis kontinuierlich ausgelöst wird.

Wirkung:

Oben sind die Einzelheiten des Beispiels für die Verwendung von Vue2.x-Anti-Shake und Throttling aufgeführt. Weitere Informationen zu Vue Anti-Shake und Throttling finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Analyse von Beispielen für die Verwendung von Anti-Shake und Throttling in Vue-Komponenten
  • So verwenden Sie Anti-Shake und Throttling in Vue
  • Richtige Verwendung der Vue-Funktion Anti-Shake und Throttling
  • Eine kurze Analyse von VUE Anti-Shake und Throttling
  • Verwenden von lodash in Vue zum Beruhigen und Drosseln von Ereignissen
  • So verwenden Sie Anti-Shake und Throttling in Vue

<<:  Wir zeigen Ihnen einen Trick, um einen Textvergleich unter Linux durchzuführen

>>:  MySQL-Batch löschen großer Datenmengen

Artikel empfehlen

Fallzusammenfassung zur Vue-Komponentenkommunikationsmethode

Inhaltsverzeichnis 1. Übergeordnete Komponente üb...

Beispiele für vertikale Raster und progressiven Zeilenabstand

Neue Fragen Kommen und gehen Sie in Eile. Seit de...

Detaillierte Erläuterung der MySQL-Indexauswahl und -Optimierung

Inhaltsverzeichnis Indexmodell B+Baum Indexauswah...

In der HTML-Tabelle wird nur der äußere Rand der Tabelle angezeigt

Ich möchte eine Frage stellen. Ich habe in Dreamw...

Warum Nginx besser ist als Apache

Nginx hat in nur wenigen Jahren den Großteil des ...

Grundlegendes Verständnis und Verwendung der HTML-Auswahloption

Detaillierte Erklärung von HTML (Option auswählen)...

Natives JS zur Implementierung der Dropdown-Box-Auswahlkomponente

In diesem Artikelbeispiel wird der spezifische JS...

So gehen Sie mit Zeitzonenproblemen in Docker um

Hintergrund Als ich in diesen beiden Tagen Docker...

Eine Untersuchung des JS-Operators im Problem

Die Sache ist: Jeder kennt „Speicherlecks“. Es gi...

Einführung in die Anwendung der HTML-Tags superscript sup und subscript sub

HTML-Tag: hochgestellt In HTML definiert das <s...