这里非自己总结,忘了在哪看到的仅作为笔记记录
防抖
可以把多个顺序地调用合并成一次,也就是在一定时间内,规定事件被触发的次数。
/* 封装函数debounce, 实现防抖 */
function debounce(func, delay = 500) {
let timer = null
return function (...args) {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, args)
}, delay)
}
}
节流函数
只允许一个函数在 X 毫秒内执行一次,只有当上一次函数执行后过了你规定的时间间隔,才能进行下一次该函数的调用。
/* 封装函数throttle, 实现节流 */
function throttle(func, delay = 500) {
let timer = null
let status = false
return function (...args) {
if (status)
return;
status = true
timer = setTimeout(() => {
func.apply(this, args)
status = false
}, delay)
}
}