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:
|
<<: Wir zeigen Ihnen einen Trick, um einen Textvergleich unter Linux durchzuführen
>>: MySQL-Batch löschen großer Datenmengen
Problembeschreibung: Code kopieren Der Code laute...
Voraussetzung: Sie müssen das Modul ngx_http_head...
Wir alle wissen, dass wir die Eigenschaften der P...
Ich habe kürzlich an einem Projekt gearbeitet – B...
Informationen zur Bedienung finden Sie hier in de...
1. Was ist Vue Vue ist ein fortschrittliches Fram...
Inhaltsverzeichnis 1. Holen Sie sich den Wert des...
Vorwort Wir alle wissen, dass Startups zunächst m...
Vor Kurzem habe ich Vue verwendet, um das Entwick...
Inhaltsverzeichnis Vorwort Einrichten mit Vue CLI...
Inhaltsverzeichnis 1. vorErstellen & erstellt...
Wenn Sie ein Upgrade in einer formalen Umgebung d...
Wie kann die Seiten-Rendering-Zeit im Browser so ...
Docker-Funktionen 1) Schneller Einstieg Benutzer ...
Inhaltsverzeichnis Vorne geschrieben Lösung 1: Gl...