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
01. Unendlichkeit Schriftart herunterladen 02. Ban...
Vorwort Im vorherigen Artikel wurde die Installat...
Vorwort Docker kann Umgebungsvariablen für Contai...
Detaillierte Beschreibung der Eigenschaften Der Z...
1. Gleiche IP-Adresse, unterschiedliche Portnumme...
Dieses Mal werden wir versuchen, den laufenden Co...
einführen Durch das Einrichten einer Lese-/Schrei...
Heute habe ich Docker verwendet, um das Image abz...
Das Projekt wurde in diesen Tagen getestet und de...
Ziehen Sie einfach das Image, erstellen Sie einen...
Dieser Artikel beschreibt zu Ihrer Information, w...
Füge im CSS-Style des Elements, welches die Hinte...
Inhaltsverzeichnis UNION Tabelleninitialisierung ...
Dieses Tutorial ist nur auf Windows-Systemen anwe...
Beim Verwenden der MySql-Fensterfunktion zum Samm...