JavaScript-Entprellung

Anika Tabassum Era 15 Februar 2024
  1. JavaScript debounce Funktionsmechanismus
  2. Verwenden Sie die lodash debounce-Methode für eine bessere Leistung
JavaScript-Entprellung

Die Funktion debounce drive ist keine explizite Methode, die mit den Selektoren instanziiert werden kann. Seine Definition umfasst einen Timer, eine zurückgegebene Funktion und die Kontexte.

Abgesehen von diesem expliziten debounce haben wir jQuery debounce, lodash debounce und underscore.js debounce. Zur Visualisierung setzen wir die Beispiele im folgenden Abschnitt.

Der Use Case ist wohl im Fall des jQuery debounce veraltet. Es gibt eine große Auswahl an Diskussionen und Demonstrationen, die online verfügbar sind, aber die früheren und neuesten Versionen von jQuery geben keine Ausgabe; Stattdessen sagt die Implementierung, dass die Funktion $.debounce nicht existiert.

Wir werden hier jedoch zwei Beispiele mit der grundlegenden Implementierung des debounce-Mechanismus und der lodash debounce-Methode untersuchen. lodash wird über die underscore.js-Konvention betrachtet.

Wir konzentrieren uns also auf die Lodash-Entprellung. Trotz des Grundsystems für diese Funktion kann es auch einige andere Parameter annehmen.

Dies dient auch der besseren Performance. Sie können zu diesem Portal weiterleiten, um lodash debounce besser zu verstehen.

JavaScript debounce Funktionsmechanismus

Die grundlegende Notwendigkeit der Verwendung der Entprellfunktion besteht darin, unerwünschte Aktionen zu reduzieren und somit die Funktionsverzögerung zu begrenzen. Nun könnte sich die Frage stellen, wie dies durch eine Verzögerung zu einer besseren Leistung führt.

Nun, betrachten wir eine Alarm-Methode des Fensters. Was passiert ist, dass wenn wir auf eine ausgelöste Schaltfläche klicken, die der Warnung entspricht, diese ausgelöst wird.

Wenn der Benutzer den Klick jedoch prompt nacheinander wiederholt, sehen Sie, dass die Warnmeldung eine ungleichmäßige Vorschau oder nur eine Anrufaktion anzeigt. Das liegt an mangelnder Leistung.

Auf jeden Klick oder Trigger folgt eine Akzeptanzzeit des Signals und abhängig davon wird die Restaktion ausgelöst. Wenn wir in ein Suchfeld tippen, liefert jeder Tastendruck aktualisierte gefilterte Ergebnisse.

Dies ist auch eine Implementierung dieser debounce-Funktion, die besagt: “Egal wie oft Sie mich anklicken oder mich auslösen, ich werde erst nach der Zeit arbeiten, zu der ich aufgefordert werde, zu verzögern”. Wenn also jemand abrupt auf eine Schaltfläche klickt, zeigt er seine Funktion nach der erwähnten Zeitverzögerung an.

Hier in der Instanz haben wir einen Timer, der jedes Mal gelöscht wird, wenn die Funktion ausgelöst wird. Und wenn ein weiterer Klick gerichtet ist und die Zeitverzögerung größer als die Differenz zwischen den Klicks ist, setzt die Funktion die Zeitzählung erneut zurück.

Und folgt dem letzten Klick und beginnt mit dem Zählen der Zeit und einer Vorschau der Aufgabe.

Code-Auszug:

<html>
    <body>
        <button id="db">Debounce</button>
        <script>
            var btn = document.getElementById("db");
            const debounce = (func, delay) => {
                let Timer
                return function() {
                        clearTimeout(Timer)
                            Timer
                        = setTimeout(() => func.apply(this, arguments), delay)
                }
            }
            btn.addEventListener('click', debounce(function() {
                    alert("Executing after a sec!!")
                                    }, 1000));
        </script>
    </body>
</html>

Ausgang:

JavaScript-Debounce-Funktionsmechanismus

Unsere Entprellen-Funktion benötigt also zwei Parameter, die Zeitverzögerung und den Kontext. Bei jedem Anruf wird die Zeitverzögerung gelöscht und beginnt von neuem.

Somit ist eine gewisse Zeitverzögerung gewährleistet, und trotz des Benutzerverhaltens auf der Triggerfunktion gibt die interne Entprellung eine entprellte Funktion zurück, die nichts anderes ist als die Funktion, an der wir arbeiten, begrenzt durch einen Zeitrahmen.

Verwenden Sie die lodash debounce-Methode für eine bessere Leistung

In dieser angegebenen lodash-Bibliothek haben wir eine vordefinierte _.debounce-Methode, die die Funktion, die Verzögerung und einen weiteren optionalen Parameter übernimmt. Daher müssen wir die klaren und zeitlich festgelegten Einschränkungen nicht explizit definieren.

Vielmehr ist es abstrahiert, und wir können die Entprellfunktion ausführen, indem wir es einfach aufrufen.

Code-Auszug:

<html>
    <body>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
        <button id="db">Debounce</button>
        <script>
            var db = document.getElementById("db");
            var debounce = _.debounce(function(){
              alert("Wait for a sec!")
            }, 1000, {'leading':false})
            db.addEventListener('click', debounce);
        </script>
    </body>
</html>

Ausgang:

Use lodash debounce method for better performance

Anika Tabassum Era avatar Anika Tabassum Era avatar

Era is an observer who loves cracking the ambiguos barriers. An AI enthusiast to help others with the drive and develop a stronger community.

LinkedIn Facebook

Verwandter Artikel - JavaScript Debounce