防抖

作者: jiangzj | 来源:发表于2019-02-23 18:40 被阅读0次

主要是为了避免在频繁的操作中导致页面的卡顿,因此将短时间内多次的操作合并为一次。

const debounce = (func, wait=50) => {
    let timer = 0
    let f = function (...args) {
        if (timer) {
            clearTimeout(timer)
        }
        timer = setTimeout(() => {
            func.apply(this, args)
        })
    }
    return f
}

但是,有时候需要需要立刻执行,因此做一下修改

const debounce = (func, wait=50, immediate=true) => {
    let timer = 0
    let context = null
    let args = null

    const later = () => {
      setTimeout(() => {
          timer = null
          if (!immediate) {
              func.apply(context, args)
              context = null
              args = null
          }
      }, wait)
    }

    let f = function (...params) {
        if (timer) {
            clearTimeout(timer)
            timer = later()
        } else {
            timer = later()
            if (immediate) {
                func.apply(context, args)
            } else {
                context = this
                args = params
            }
        }
    }
    return f
}

相关文章

  • 索尼机身防抖和镜头防抖

    索尼微单系统拥有带防抖功能的机身和带防抖功能的镜头。无论防抖组件位于哪里,它们都属于光学防抖。 机身防抖 机身防抖...

  • js 防抖 节流

    节流 防抖1 防抖2

  • javaScript 防抖函数

    一. 防抖函数的定义与使用 防抖函数的定义 防抖函数的调用 二. 防抖函数应用场景 其实在HTML 和javaSc...

  • 防抖与节流

    1. 防抖函数 1.1 防抖定义: 函数防抖(debounce):当持续触发事件时(例如mousemove),一定...

  • 项目常用代码

    节流 } 防抖 } 页面滚动(requestAnimationFrame) vue全局点击防抖

  • 函数防抖防抖/节流

    众所周知,函数节流和函数防抖都是优化高频率执行js代码的一种方法,二者的区别及使用方法如下: 函数节流 函数防抖,...

  • JS函数防抖

    JS 中的函数防抖 一、什么是函数防抖? 概念: 函数防抖(debounce), 就是指触发事件后,在 n 秒内函...

  • js 防抖和节流

    防抖 防抖是js优化的重要的一部分,也是面试中手写代码最常考的题目。那么我们为什么要防抖?防抖是什么意思?比如我们...

  • JavaScript防抖和节流

    1. 认识防抖和节流 1.1. 对防抖和节流的认识 防抖和节流的概念其实最早并不是出现在软件工程中,防抖是出现在电...

  • 节流与防抖

    使用防抖和节流技术的意义:节约资源,提升用户体验。 防抖(debounce) 防抖:触发高频事件后n秒内函数只会执...

网友评论

      本文标题:防抖

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