实现个简单的防抖节流

什么是防抖和节流?有什么区别?如何实现?

节流是在一定时间内只能触发一次,可以应用于监听滚动条,减少同一时间触发的次数
防抖是触发后一定时间才会调用并且重新触发又会重新计时,可以用于监听input输入合法性

防抖

        const throttle = (fn, sec) => {
            if (typeof fn !== 'function') return
            let flag = true
            return function () {
                if (!flag) return
                fn.apply(this, [...arguments])
                flag = false
                setTimeout(() => {
                    flag = true
                }, sec);
            }
        }

节流

        const debounce = (fn, sec) => {
            if (typeof fn !== 'function') return
            let timer = null
            return function () {
                clearTimeout(timer)
                timer = setTimeout(() => {
                    fn.apply(this, [...arguments])
                }, sec);
            }
        }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容