js -防抖节流

一,防抖

函数防抖:将几次操作合并为一此操作进行。原理是维护一个计时器,规定在delay时间后触发函数,但是在delay时间内再次触发的话,就会取消之前的计时器而重新设置。这样一来,只有最后一次操作能被触发。

应用:

搜索框在输入稍有停顿时才更新推荐热词

function debounce(handler, delay) {
    delay = delay || 300;
    var timer = null;
  
    return function () {
      var _self = this,
        _args = arguments;
  
      clearTimeout(timer);
      timer = setTimeout(function () {
        handler.apply(_self, _args);
      }, delay);
    };
  }

  

二,节流

使得一定时间内只触发一次函数。原理是通过判断是否到达一定时间来触发函数。

应用:

- 抢券时疯狂点击,既要限制次数,又要保证先点先发出请求
- 频繁点击图片验证码

function throttle(handler, wait) {
    wait = wait || 300;
    var lastTime = 0; 
  
    return function () {
      var _self = this,
        _args = arguments;
  
      var nowTime = new Date().getTime();
      if (nowTime - lastTime > wait) {
        handler.apply(_self, _args);
        lastTime = nowTime;
      }
    };
  }
  function handler(){
      console.log('111')
  }
window.addEventListener("mousemove",throttle(handler,2000))

  

posted @ 2020-10-15 17:29  北巷听雨  阅读(93)  评论(0编辑  收藏  举报
返回顶端