// 防抖:在事件被触发n秒后执行回调,如果在这n秒内又被触发,则重新计时。
// 简易的单个版本
let timer = null
function f(...arg) {
clearTimeout(timer)
timer = setTimeout(() => {
fn(arg)
}, delay)
}
// 封装版本
function debouce(fn, delay) {
let timer = null
return (...arg) => {
clearTimeout(timer)
timer = setTimeout(() => { // 别忘了给timer赋值
fn(arg)
}, delay)
}
}
// 节流:规定在单位时间内,只能触发一次回调,如果触发多次,只有一次生效。
// 单个函数
let flag = true
function f(...arg) {
if (flag === false) return
flag = false
setTimeout(() => {
fn(arg)
flag = true
}, delay)
}
// 函数集合
function throlt(fn, delay) {
let flag = true
return (...arg) => {
if (flag === false) return
flag = false
setTimeout(() => {
fn(arg)
flag = true // 别忘了
}, delay)
}
}
console