防抖 | 节流
1 防抖 | debounce
函数防抖:在特定时间内,只执行一次
function debounce(fn, delay) {
// 定义一个空变量
let timer = null
return function() {
clearTimeout(timer) // 持续触发清除定时器就不会触发了
timer = setTimeout(() => {
fn.apply(this, arguments)
}, delay)
}
}
2 节流 | throttle
函数节流:在特定时间后,重新执行一次
function throttle(fn, delay) {
// 定义一个标志
let flag = true
return function() {
if (!flag) {
// 不执行
return false
}
// 在特定时间内,设置标志不执行
flag = false
setTimeout(() => {
fn()
flag = true
}, delay)
}
}