js节流和防抖

节流:每隔一段时间触发一次

<input type="text" id="input" />
// 方法一:
function throttle(fn,delay){
    let valid = true
    return function() {
       if(!valid){
           return false 
       }
        valid = false
        setTimeout(() => {
            fn()
            valid = true;
        }, delay)
    }
}
// 方法二:
 function throttle(fn, wait) {
      let time = null;
      return function() {
          if (!time) {
              time = setTimeout(() => {
                  time = null;
                  fn();
              }, wait);
          }
      };
  }
// 一直输入,每隔两秒触发一次fn
let oInput = document.getElementById("input");
oInput.oninput = throttle(fn, 2000);

防抖:在一段时间里,只触发一次。

<input type="text" id="input" />

function debounce(fn,delay){
    let timer = null //借助闭包
    return function() {
        if(timer){
            clearTimeout(timer) 
        }
        timer = setTimeout(fn,delay) 
    }
}

// 一直输入,不会触发fn,只有停止输入2秒后,才会触发一次fn
let oInput = document.getElementById("input");
oInput.oninput = debounce(function(){
  console.log(123)
}, 2000);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,646评论 1 45
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,223评论 4 61
  • 乐嘉写的《本色》一直想看,因为在他还没出版这本书时,他就时不时在微博提到他即将出版的这本《本色》有别于以...
    hotapple阅读 950评论 0 0
  • 郑言泽暂时住在胡心玲的糕点店里。平时帮助胡心玲打理糕点店里的生意,晚上打扫店里全天累积的垃圾,清洗马桶等,反正...
    暮雪寒城阅读 140评论 0 0
  • 贪婪,很恐惧的字眼,从字体来看,既有对金钱,又有对美女的渴望。想得到原本不属于自己的东西。 天主教义七宗罪,贪婪是...
    LiveFuture阅读 109评论 0 1