防抖的基本实现:
function debounce(fn, dalay){
//定义一个定时器,保存上一次的定时器
let timer = null
const _debounce = function(){
//取消上一次的定时器
if(timer)clearTimeout(timer)
//延迟执行
timer = setTimeout(() => {
//传入外部真正要执行的函数
fn()
}, dalay);
}
return _debounce
}
———
节流的基本实现:
function throttle(fn, interval){
//记录上一次开始的时间
let lastTime = 0
const _throttle = function(){
//获取当前事件触发的时间
const nowTime = new Date().getTime()
//计算保留时间,间隔时间 - (当前触发的时间 - 上一次开始的时间)
const remainTime = interval - (nowTime - lastTime)
if(remainTime <= 0){
//当保留时间 <= 0 的时候,重新执行
fn()
//将当前事件触发的时间设置为上一次触发的时间
lastTime = nowTime
}
}
return _throttle
}