防抖:在一定时间范围内函数只执行一次,而且执行的是最后一次触发的该函数
// 防抖函数
function debounce(fn, delay) {
// 通过闭包共享变量
let timer = null
return function () {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(fn, delay)
}
}
节流:在指定时间间隔内执行某一函数,时间间隔外即使触发也不执行该函数
// 节流函数
function throttle(fn, delay) {
let timer = null
// 默认阀门开启,可以正常执行
let isClose = false
return function () {
if (isClose) {
return false
}
isClose = true
timer = setTimeout(() => {
fn()
isClose = false
}, delay)
}
}
网友评论