标签:性能 from bounce 改变 服务器 drag事件 闭包 put 请求
触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间,即如果在n秒内
再次触发该事件,会清除前一次的延时函数
代码实现
// 防抖
function debounce(fn, delay = 500) {
    // timer 是闭包中的
    let timer = null
    return function () {
        if (timer) {
            clearTimeout(timer)
        }
        timer = setTimeout(() => {
            fn.apply(this, arguments)
            timer = null
        }, delay)
    }
}
应用场景
规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
// 节流
function throttle(fn, delay = 100) {
    let timer = null
    return function () {
        if (timer) {
            return
        }
        timer = setTimeout(() => {
            fn.apply(this, arguments)
            timer = null
        }, delay)
    }
}
一般在实际项目中我们可以直接用库import _ from ‘lodash‘;
vue中用法如下
标签:性能 from bounce 改变 服务器 drag事件 闭包 put 请求
原文地址:https://www.cnblogs.com/fcblog2022/p/13277227.html