js防抖与节流

作者: tiancai啊呆 | 来源:发表于2018-05-25 20:19 被阅读35次

在前端开发中会遇到一些频繁的事件触发,例如input,keyup,keydown,scroll,resize,mousemove等,这非常影响性能,所以我们需要控制它们触发的频率,方法就是防抖与节流。

  • 防抖
    防抖的原理就是:要等你触发完事件 n 秒内不再触发事件,我才执行。
      function debounce(func, wait) {
          var timeout;
          return function () {
              var context = this;
              var args = arguments;
              clearTimeout(timeout)
              timeout = setTimeout(function () {
                  func.apply(context, args)
              }, wait);
          }
      }
    
  • 节流
    节流的原理很简单:如果你持续触发事件,每隔一段时间,只执行一次事件。
    有两种主流的实现方式,一种是使用时间戳,一种是设置定时器。
    • 定时器实现
      特点:会在 n 秒后第一次执行,事件停止触发后依然会再执行一次事件
      function throttle(func, wait) {
          var timeout;
          return function () {
              var context = this;
              var args = arguments;
              if (!timeout) {
                  timeout = setTimeout(function () {
                      func.apply(context, args)
                      timeout = null;
                  }, wait)
              }
          }
      }
    
    • 时间戳实现
      特点:第一次事件会立刻执行,停止触发后没有办法再执行事件
      function throttle(func, wait) {
          var previous = 0;
          return function () {
              var now = Date.now();
              var context = this;
              var args = arguments;
              if (now - previous > wait) {
                  func.apply(context, args);
                  previous = now;
              }
          }
      }
    
  • 参考
    JavaScript专题之跟着underscore学节流
    JavaScript专题之跟着underscore学防抖

相关文章

  • 函数节流与函数防抖

    函数节流与函数防抖的区别JS魔法堂:函数节流(throttle)与函数去抖(debounce)函数的防抖与节流 自...

  • 前端性能优化-浅谈js防抖和节流

    浅谈js防抖和节流

  • 防抖和节流

    一、防抖:只执行最后一次 js防抖方法 一、节流:控制执行次数 节流

  • JavaScript:函数防抖与节流

    什么是函数防抖与节流? 函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段。 定义: 防抖: n 秒后在...

  • 微信小程序防抖、节流的使用

    1、防抖、节流函数的封装 在utils文件夹下新建utils.js文件,然后写入节流和防抖函数 在.js页面引入并使用:

  • js函数的防抖(debounce)与节流(throttle)

    js 函数的防抖(debounce)与节流(throttle)[https://www.cnblogs.com/c...

  • js的防抖和节流

    js的 防抖(debounce)和 节流(throttle ) 防抖和节流一般用于高频触发事件,属于浏览器性能优化...

  • JS 节流与防抖

    本文的主角是节流 throttle 与防抖 debounce。 区别节流强调的是m秒内函数最多触发一次,注意这里的...

  • js防抖与节流

    在前端开发中会遇到一些频繁的事件触发,例如input,keyup,keydown,scroll,resize,mo...

  • js防抖与节流

    1.节流(throttle) 定义:先定义个执行周期,当时间执行时间大于等于执行周期,那就进入新的周期;如果小于执...

网友评论

    本文标题:js防抖与节流

    本文链接:https://www.haomeiwen.com/subject/zduedftx.html