Inhaltsverzeichnis
1. Die Entprellfunktion erzwingt, dass eine Funktion nur einmal innerhalb eines bestimmten kontinuierlichen Zeitraums ausgeführt wird, auch wenn sie mehrmals aufgerufen worden wäre. Wir hoffen, dass die entsprechende Überwachungsfunktion ausgeführt wird, nachdem der Benutzer eine Operation für einen bestimmten Zeitraum gestoppt hat, anstatt die Überwachungsfunktion so oft auszuführen, wie der Browser das Ereignis während der Operation des Benutzers auslöst.
Drossel
Heim Web-Frontend js-Tutorial Implementierungsprinzipien der Debounce-Funktion und der Throttle-Funktion

Implementierungsprinzipien der Debounce-Funktion und der Throttle-Funktion

Jul 13, 2018 pm 04:42 PM
html5 javascript node.js

Dieser Artikel stellt hauptsächlich die Implementierungsprinzipien der Debounce- und Throttle-Funktion vor. Er hat einen gewissen Referenzwert. Jetzt kann ich ihn mit allen teilen.

Die Prinzipien und die Implementierung von Debounce und Throttle .

  • Drosselung und Entprellung sind beides Methoden zur Verbesserung der Ausführungsleistung von Ereignisverarbeitungsfunktionen durch Reduzierung der Ausführung der tatsächlichen Logikverarbeitung . Die beiden sind im Hinblick auf das konzeptionelle Verständnis tatsächlich verwirrend.

  • Debounce erzwingt, dass die Funktion nur einmal innerhalb eines bestimmten Zeitraums ausgeführt wird, während Throttle die Funktion erzwingt mit einer festen Rate auszuführen. Sie können die Benutzererfahrung beim Umgang mit einigen häufig ausgelösten DOM-Ereignissen erheblich verbessern.

Beim Umgang mit Ereignissen wie Größenänderung, Scrollen, Mausbewegung und Tasten-/Tasten-/Tastendruck möchten wir normalerweise nicht, dass diese Ereignisse zu häufig ausgelöst werden, insbesondere das Listener-Programm Es erfordert viele Berechnungen oder sehr ressourcenintensive Vorgänge.

Wie oft? Nehmen Sie als Beispiel die Mausbewegung: „Wenn sich die Maus kontinuierlich bewegt, sollte der Browser mehrere aufeinanderfolgende Mausbewegungsereignisse auslösen, basierend auf dem Verhalten des Benutzers, wenn sein interner Timer vorhanden ist.“ ermöglicht die Geschwindigkeit, mit der die Maus bewegt wird, um das Mousemove-Ereignis auszulösen. (Wenn Sie die Maus schnell genug bewegen, z. B. „wischen“, löst der Browser dieses Ereignis natürlich nicht aus.) Ereignisse wie Größenänderung, Bildlauf und Taste* sind ähnlich.

1. Die Entprellfunktion erzwingt, dass eine Funktion nur einmal innerhalb eines bestimmten kontinuierlichen Zeitraums ausgeführt wird, auch wenn sie mehrmals aufgerufen worden wäre. Wir hoffen, dass die entsprechende Überwachungsfunktion ausgeführt wird, nachdem der Benutzer eine Operation für einen bestimmten Zeitraum gestoppt hat, anstatt die Überwachungsfunktion so oft auszuführen, wie der Browser das Ereignis während der Operation des Benutzers auslöst.

function debounce(fn, delay) {

  // 定时器,用来 setTimeout
  var timer

  // 返回一个函数,这个函数会在一个时间区间结束后的 delay 毫秒时执行 fn 函数
  return function () {

    // 保存函数调用时的上下文和参数,传递给 fn
    var context = this
    var args = arguments

    // 每次这个返回的函数被调用,就清除定时器,以保证不执行 fn
    clearTimeout(timer)

    // 当返回的函数被最后一次调用后(也就是用户停止了某个连续的操作),
    // 再过 delay 毫秒就执行 fn
    timer = setTimeout(function () {
      fn.apply(context, args)
    }, delay)
  }
}
Nach dem Login kopieren

debounce gibt einen Abschluss zurück. Dieser Abschluss wird weiterhin kontinuierlich und häufig aufgerufen, aber innerhalb des Abschlusses wird die Ausführung der ursprünglichen Funktion fn eingeschränkt, sodass fn nur bei kontinuierlichen Vorgängen angehalten wird einmal ausgeführt.

Drossel

Das Konzept der Drossel ist leichter zu verstehen, nämlich die Festlegung der Geschwindigkeit, mit der eine Funktion ausgeführt wird, was die sogenannte „Drossel“ ist. . Normal

/**
*
* @param fn {Function}   实际要执行的函数
* @param delay {Number}  执行间隔,单位是毫秒(ms)
*
* @return {Function}     返回一个“节流”函数
*/

function throttle(fn, threshhold) {

  // 记录上次执行的时间
  var last

  // 定时器
  var timer

  // 默认间隔为 250ms
  threshhold || (threshhold = 250)

  // 返回的函数,每过 threshhold 毫秒就执行一次 fn 函数
  return function () {

    // 保存函数调用时的上下文和参数,传递给 fn
    var context = this
    var args = arguments

    var now = +new Date()

    // 如果距离上次执行 fn 函数的时间小于 threshhold,那么就放弃
    // 执行 fn,并重新计时
    if (last && now <p>Nach der Anwendung der beiden wird es direkt Effizienz bringen. Wenn Sie den Unterschied zwischen Debounce und Throttle immer noch nicht vollständig verstehen, können Sie auf dieser Seite einen visuellen Vergleich der beiden sehen. <br><img src="/static/imghw/default1.png" data-src="https://img.php.cn//upload/image/571/717/740/1531471276493544.png" class="lazy" title="1531471276493544.png" alt="Implementierungsprinzipien der Debounce-Funktion und der Throttle-Funktion"></p><p>Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website. </p><p>Verwandte Empfehlungen: </p><p class="comments-box-content"></p><p class="mt20 ad-detail-mm hidden-xs"><a title="对于JavaScript中的函数重载的说明" href="http://www.php.cn/js-tutorial-406490.html" target="_blank">Anleitung zur Funktionsüberladung in JavaScript</a><br></p><p class="mt20 ad-detail-mm hidden-xs"><a title="利用JavaScript中发出HTTP请求的方法" href="http://www.php.cn/js-tutorial-406487.html" target="_blank">Verwendung von JavaScript-Methoden zur Erstellung HTTP-Anfragen in </a><br></p>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonImplementierungsprinzipien der Debounce-Funktion und der Throttle-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles