js中的防抖

/**

  • 防抖
  • 在一定时间间隔内,多次调用一个方法,只会执行一次.
  • @param {*} func 要进行debouce的函数
  • @param {*} wait 等待时间,默认500ms
  • @param {*} immediate 是否立即执行

*/

export function debounce(func, wait=500, immediate=false) {
    var timeout
    return function() {
        var context = this
        var args = arguments

        if (timeout) clearTimeout(timeout)
        if (immediate) {
            // 如果已经执行过,不再执行
            var callNow = !timeout
            timeout = setTimeout(function() {
                timeout = null
            }, wait)
            if (callNow) func.apply(context, args)
        } else {
            timeout = setTimeout(function() {
                func.apply(context, args)
            }, wait)
        }
    }
}

在开发中经常会有这样的需求,需要用到防抖方法

上一篇:获取对象属性类型、属性名称、属性值的研究:反射和JEXL解析引擎


下一篇:震惊!当Python遇到Excel后,将开启你的认知虫洞