SOURCE

// 防抖:连续触发只执行最后一次触发
// 节流:连续触发,一段时间内触发一次
let lastExecTimestamp = 0
// 判断定时器
let time = null
const debounce = (fn) => {
    // 判断触发后的有效时间
    const duration = 3000
    // 是否在一次触发到有效时间内又有再次触发
    const now = new Date()
    const nowTimestamp = now.getTime()
    if (nowTimestamp - lastExecTimestamp < duration) {
        timer = null
        lastExecTimestamp = nowTimestamp
        return
    }
    timer = setTimeout(() => {
        fn()
    }, duration)
}

const test = () => {
    console.log('hello')
}

for (let i = 0; i < 10; i++) {
    debounce(test)
}
console 命令行工具 X clear

                    
>
console