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

Über IE8-Kompatibilität: Erklärung des X-UA-Compatible-Attributs

Problembeschreibung: Code kopieren Der Code laute...

Implementierung der Header-Informationen für Nginx-Operationsantworten

Voraussetzung: Sie müssen das Modul ngx_http_head...

Zwei Verwendungen von iFrame-Tags in HTML

Ich habe kürzlich an einem Projekt gearbeitet – B...

Teilen Sie 20 JavaScript-Einzeilencodes

Inhaltsverzeichnis 1. Holen Sie sich den Wert des...

So lösen Sie das Problem der hohen Parallelität in der MySQL-Datenbank

Vorwort Wir alle wissen, dass Startups zunächst m...

Praktisches Beispiel für verschachtelte Routen im vue.js Router

Inhaltsverzeichnis Vorwort Einrichten mit Vue CLI...

Dieser Artikel hilft Ihnen, den Lebenszyklus in Vue zu verstehen

Inhaltsverzeichnis 1. vorErstellen & erstellt...

Tutorial zum Upgrade von Centos7 auf Centos8 (mit Bildern und Text)

Wenn Sie ein Upgrade in einer formalen Umgebung d...

Verkürzen Sie die Seiten-Rendering-Zeit, damit die Seite schneller läuft

Wie kann die Seiten-Rendering-Zeit im Browser so ...

Skin-Change-Lösung basierend auf Vue kombiniert mit ElementUI

Inhaltsverzeichnis Vorne geschrieben Lösung 1: Gl...