vue中的防抖节流

86 阅读1分钟

1什么是防抖节流

防抖:防止重复点击触发事件

代码实现要点:首先设置一个定时器,通过闭包,抓住定时器变量,控制定时器的添加和清除 直接上代码

  function debounce(fn, time) {
      let _arguments = arguments
      let timeout = null
      return function () {
          if (timeout) {
              clearTimeout(timeout)
          }
          timeout = setTimeout(() => {
              fn.call(this, _arguments)
          }, time);
      }
  }

2.什么是节流

节流:指定时间间隔内只会执行一次任务

代码实现要点:通过一个布尔变量作为状态,判断代码是否需要执行 直接上代码

  function throttle(fn, time) {
      let _arguments = arguments
      let canRun = true 
      return function () {
          if (!canRun) return
          canRun = false
          setTimeout(() => {
              fn.call(this, _arguments)
              canRun = true
          }, time);
      }
  }