Heim  >  Artikel  >  Web-Frontend  >  Einführung in Anwendungsszenarien der Drosselung und des Anti-Shake von Javascript-Funktionen

Einführung in Anwendungsszenarien der Drosselung und des Anti-Shake von Javascript-Funktionen

不言
不言nach vorne
2018-10-19 15:06:332640Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in die Verwendung des PHP-Variablenbereichs (Code). Freunde in Not können darauf zurückgreifen.

throttle Throttle

Wird nur einmal ausgeführt, nachdem das Ereignis ausgelöst wurde.

Anwendungsszenario

Wenn das Mousemove-Ereignis ausgelöst wird, z. B. eine Mausbewegung.

Situationen, die das Keyup-Ereignis auslösen, z. B. eine Suche.

Wenn das Scroll-Ereignis beispielsweise ausgelöst wird, wird das Laden von Daten ausgelöst, wenn die Maus aufhört, nach unten zu scrollen.

Codierung

Methode 1 Anti-Shake

// function resizehandler(fn, delay){
//   clearTimeout(fn.timer);
//   fn.timer = setTimeout(() => {
//      fn();
//   }, delay);
// }
// window.onresize = () => resizehandler(fn, 1000);

Methode 2 Schließung Anti-shake

function resizehandler(fn, delay){
    let timer = null;
    return function() {
      const context = this;
      const args=arguments;
      clearTimeout(timer);
      timer = setTimeout(() => {
         fn.apply(context,args);
      }, delay);
    }
 }
 window.onresize = resizehandler(fn, 1000);

Entprellung Anti-Shake Schütteln

Einmal innerhalb eines bestimmten Ereignisses ausführen, nachdem das Ereignis ausgelöst wurde.

Anwendungsszenario

Das durch Fensterwechsel ausgelöste Größenänderungsereignis wird nur einmal ausgeführt.

Um die eingegebene Telefonnummer zu überprüfen, hören Sie einfach einmal mit der Eingabe auf.

Codierung

function resizehandler(fn, delay, duration) {
        let timer = null;
        let beginTime = +new Date();
        return function() {
          const context = this;
          const args = arguments;
          const currentTime = +new Date();
          timer && clearTimeout(timer);
          if ((currentTime - beginTime) >= duration) {
            fn.call(context, args);
            beginTime = currentTime;
           } else {
             timer = setTimeout(() => {
               fn.call(context, args)
             }, delay);
           }
        }
      }

        window.onresize = resizehandler(fn, 1000, 1000);

Das obige ist der detaillierte Inhalt vonEinführung in Anwendungsszenarien der Drosselung und des Anti-Shake von Javascript-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen