节流:单位时间内,频繁触发事件,只执行第一次
核心思想:触发事件会设置定时器,定时器存在则不做反应。一开始触发了事件,在触发事件的同时创造定时器,后面由于该定时器存在,就不再设置新的定时器。最终实现频繁触发事件,只执行第一次。
代码:
function debounce(fn, t) {
let timer = null
return function () {
if (!timer) {
timer = setTimeout(function () {
fn()
timer = null
}, t)
}
}
}
防抖:单位时间内,频繁触发事件,只执行最后一次
核心思想:触发事件都会设置一个定时器,再次触发再次创建,并清除前面设置的定时器,直到最后一次触发事件,等待定时器倒计时完成并执行
代码:
function debounce(fn, t) {
let timer
return function () {
if (timer) { clearTimeout(timer) }
timer = setTimeout(function () {
fn()
}, t)
}
}