写点什么

JavaScript 进阶(四)防抖

用户头像
Augus
关注
发布于: 1 小时前
JavaScript进阶(四)防抖

防抖

在我们日常开发中,尤其在一些需要和用户实现大量且频繁的交互的时候,肯定会遇到用户频繁点击,导致接口报错,这个时候我们就需要对其做一些优化了,通常这种情况都是通过防抖来实现的。

那防抖是什么呢?

  • 简单点就是,用户在一定时间内多次点击触发一个事件时,只会执行最后一次。

代码实现

/** * 防抖函数,函数连续调⽤时,时间间隔必须⼤于或等于 wait,func才会执⾏ * @param {function} func:回调函数 * @param {number} wait:时间间隔,默认值 48 * @param {boolean} immediate:是否⽴即调⽤函数,true为立即执行,默认值为true * @return {function} 返回调⽤函数的结果 */function debounce(func, wait = 48, immediate = true) {    let timer, context, args    // 定义延迟执⾏函数    const later = () => setTimeout(() => {        // 延迟函数执⾏完毕,清空缓存的定时器        timer = null        // 延迟执⾏的情况下,函数会在延迟函数中执⾏        if (!immediate) {            func.apply(context, args)            context = args = null        }    }, wait)    // 这⾥返回是每次实际调⽤的函数    return function (...params) {        // 如果是否创建延迟执⾏函数(later),没有就重新创建        if (!timer) {            timer = later()            // 如果是⽴即执⾏,就调⽤函数            if (immediate) {                func.apply(this, params)            } else {                context = this                args = params            }            // 如果已有延迟执⾏函数(later),调⽤的时候清除原来的并重新设定            // 这样做延迟函数会重新计时        } else {            clearTimeout(timer)            timer = later()        }    }}
复制代码


好了,防抖的介绍的差不多了,相信对你日后的开发肯定会起到一定作用的。 今天就到这里了。还是那句老话书读百遍其义自见,相信自己加油。


大家,再见,我是 Augus,一个爱瞎搞的软件开发工程师。


END~~~

用户头像

Augus

关注

爱瞎搞的软件开发工程师 2021.06.10 加入

某摸鱼集团

评论

发布
暂无评论
JavaScript进阶(四)防抖