zoukankan      html  css  js  c++  java
  • 前端的防抖和节流

     防抖和节流都是优化高频率执行js的方法
     
    dom 结构
    <button id ="jh">
      123
    </button>
     
    js 结构
    var jh =1 ;
    var jhBt = document.getElementById("jh");
     
     防抖:只有等空闲时间才去执行,
     比如搜索框功能,如果快速一直按键,难道每输入一个键就去后台匹配然后渲染吗?等用户输入完整关键字在去后台匹配是不是性能更加优化。
     
    jhBt.onclick = function(){
      console.log( window.test ,"window.test");
      // 每次点击,先清除上次定时器
      if( window.test){
        clearTimeout(window.test)
     
       }
      window.test = setTimeout(function(){
        console.log(jh++);
      },2000)
    }
     
     节流 :在一定的周期执行js

    //时间戳实现
     var ft = Date.now();
       var time = 2000 ;
      jhBt.onclick = function(){
       var lt = Date.now();
      if( lt - ft >= time ){
       console.log(jh++);
      ft = lt ;
      }
    }
     
    // 节流 计时器
     window.time=null ;
     jhBt.onclick = function ()
     // 为空则执行,执行完了则置空
      if(!window.time){
        window.time = setTimeout(function(){
           console.log(jh++);
           window.time=null ;
        },2000)
      }
    }
     
     
     自己的一些理解,如有不当之出,还望路过的园友不吝指教,助我早日走上正道。
     
     
  • 相关阅读:
    Windows Azure入门教学系列 (九):Windows Azure 诊断功能
    批量删除同类文件的函数
    Edit 的使用
    @ 与 ^ 运算符
    窗体相关操作
    uses 子句的写法
    goto 语句
    字符串常识
    not 与整数
    Memo 的当前行、当前列与当前字符
  • 原文地址:https://www.cnblogs.com/xiaohuanhuan/p/9765414.html
Copyright © 2011-2022 走看看