js之不得不提的防抖和节流

47 阅读1分钟

说说关于防抖和节流

防抖

  • 防抖概念:当事件频繁触发时,规定时间内不再触发再执行事件
    function debounce(func,wait){
         let rusult,timeout;
         return function(){
             let args= [...arguments];
             clearTimeout(timeout)
             timeout = setTimeout(()=>{
                result = func.apply(this,args)
             },wait)
         }
     }  

节流

  • 节流概念:事件一直持续进行中,但只在规定的时间内执行一次
  function throttle(func, wait) {
      let preTime = 0    //上一次的时间
      return function () {
        let args = [...arguments]  //获取事件参数
        let now = +new Date()  //时间戳 精准到秒

        if (now - preTime > wait) {   //点击第二次的时候判断时间有没有到
          func.apply(this, args)
          preTime = now
        }
      }
  }