美文网首页
节流函数的不同实现

节流函数的不同实现

作者: 惟允 | 来源:发表于2018-05-29 09:29 被阅读0次

    节流函数的不同实现

    限定最短执行间隔

    const throttle = (func, wait = 1000) => {
      let time = new Date().valueOf()
      return () => {
        const now = new Date().valueOf()
        if (now - time > wait) {
          func()
          time = now
        }
      }
    }
    

    这样做的好处是可以限定两次调用的最短间隔,但缺点也很明显,函数的响应变的卡顿。

    使用 requestAnimationFrame 实现

    const throttle = (action) =>  {
      let isRunning = false
      return () => {
        if (isRunning) return
        isRunning = true
        window.requestAnimationFrame(() => {
          action()
          isRunning = false
        })
      }
    }
    

    通过 requestAnimationFrame 实现就可以避免两次调用的卡顿,使节流后的函数调用依然流畅。

    相关文章

      网友评论

          本文标题:节流函数的不同实现

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