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
Das Erstellen von Webseiten, die Webstandards ents...
Inhaltsverzeichnis Vorwort Szenarien für die Verw...
Vorwort Der This-Zeiger in JS hat Anfängern schon...
Vorwort smb ist der Name eines Protokolls, das fü...
Inhaltsverzeichnis einführen Implementierungsschr...
Inhaltsverzeichnis Was ist das Linux-System, das ...
In diesem Artikel wird die Installations- und Kon...
Die mobile Version der Website sollte zumindest ü...
Einfaches XHTML-Webformular im Webdesign 5. Techn...
In dieser Anmerkung beschreiben wir kurz Was ist ...
1. Richten Sie auf der virtuellen Maschine einen ...
1. Tools und Bibliotheken installieren # PCRE ist...
Definition und Verwendung Mithilfe von @media-Abf...
1. MySQL erhält die aktuelle Datums- und Uhrzeitf...
Als ich heute jemandem beim Anpassen des Codes ha...