最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • JavaScript 节流防抖

    正文概述 掘金(南树)   2021-08-16   452

    函数防抖

    函数防抖:一个频繁触发的函数,在规定时间内,只让函数最后一次触发 例如:
    
    - 用户输入搜索框 避免每次敲击键盘都发送请求
    
    - 登录、发短信等按钮避免用户点击太快,以致于发送了多次请求
    
    - 调整浏览器窗口大小时,resize 次数过于频繁
    
    思路:关键在于清零 例如登录按钮点击一秒后发送登录请求 
    
         我们就可以创建一个定时器 每次用户点击的时候都清除这个定时器 让定时器重置
         
         这样就保证了这一秒内不会因为用户都频繁点击而一直发送请求 代码如下
    
    /**
     * 防抖函数
     * @param fn  要执行的函数
     * @param delay 延迟的时间
     */
    function debounce(fn, delay) {
      var timer = null;
      return function () {
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.call(this);
        }, delay);
      };
    }
    

    函数节流

    函数节流:一个函数执行一次后,只有大于设定的执行周期才会执行第二次
    
    适用场景:有一个频繁触发的函数,在规定时间内,只让函数触发一次 优化性能 例如
    
    - scroll时间 每隔1s重新计算位置 而不是一直计算
    
    - 浏览器播放时间 每隔1s重新计算一次播放进度
    
    思路:需要两个时间 lastTime 和 nowTime 来计算时间差 由此来判断是否执行事件
    
         先将lastTime初始化为0 然后获取系统时间 做差判断是否大于delay 
         
         如果大于则执行事件并将nowTime赋予lastTime 由此完成节流
    
    /**
     * 节流函数
     * @param fn  要执行的函数
     * @param delay 延迟的时间
     */
    function throttle(fn, delay) {
      var lastTime = 0;
      return function () {
        var nowTime = Date.now();
        if (nowTime - lastTime > delay) {
          fn.call(this);
          lastTime = nowTime;
        }
      };
    }
    

    起源地下载网 » JavaScript 节流防抖

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元