简单的防抖、节流

一、防抖

防抖:适用于 输入框 输入内容进行搜索(解决短时间内高频触发某事件导致响应速度跟不上频率) 等

  1. 简单粗暴
  public searchTimer=null;
  searchChange(data){
    if(!data) return;
    clearTimeout(this.searchTimer);  //区别节流
    this.searchTimer=setTimeout(()=>{
      //做的事情
    },300)
  }
  1. 封装优化
//防抖封装
function debounce(fun,wait){
    let timer=null;
    return function(arg){
        if(timer) clearTimeout(timer); //区别节流
        timer=setTimeout(_=>{
            fun.call(this,arg)
        },wait)
    }
};
//方法定义
let bb=debounce(function(da){
    //方法的其他操作
},500);
//频繁的方法调用
document.querySelector("#btn").addEventListener("click", function(){
    bb('dasdd');
});

二、节流

节流:适用于 滚动条 滚动高频触发事件==>会按照固定频率(解决短时间内高频触发某事件导致响应速度跟不上频率) 等

  1. 简单粗暴
  public searchTimer=null;
  searchChange(data){
    if(!data) return;
    if(this.searchTimer) return //区别防抖
    this.searchTimer=setTimeout(()=>{
        //做的事情
    },300)
  }
///直接调用方法
  1. 优化封装 延迟调用
//节流封装
function throttle(fun,wait){
    let timer=null;
    return function(arg){
        if(timer) return;  //区别防抖
        timer = setTimeout(()=>{
            fun.call(this,arg);
            timer = null;
        },wait);
    }
}
  1. 优化封装 直接就调用
function throttle(func,wait){
  let lastTime = 0;
  return function(...args) {
     const now = Date.now();
      if (now - lastTime >= delay) {
        func.apply(this, args);
        lastTime = now;
      }
  };
}
// 方法定义
let cc=throttle(function(ar){
    //做的事情
},1000)
 //频繁的方法调用
 document.addEventListener("scroll", function(){
      cc('dasdd');
 });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 首先:防抖是控制次数,指触发事件后,在 n 秒内函数只能执行一次,如果触发事件后在 n 秒内又触发了事件,则会重新...
    一一秋风阅读 592评论 0 3
  • 0. 引入 首先举一个例子: 模拟在输入框输入后做ajax查询请求,没有加入防抖和节流的效果,这里附上完整可执行代...
    年轻人多学点阅读 478评论 0 3
  • 什么是防抖和节流?有什么区别?如何实现? 节流是在一定时间内只能触发一次,可以应用于监听滚动条,减少同一时间触发的...
    土豪码农阅读 452评论 1 1
  • 函数防抖(debounce):触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。...
    小小欢颜啦阅读 1,011评论 0 0
  • 函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段有时在给DOM绑定事件时,有些事件我们是无法控制触发频...
    yanliting阅读 239评论 0 1