// 防抖:连续触发只执行最后一次触发
// 节流:连续触发,一段时间内触发一次
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)
}