// 实现防抖函数
function debounce(fn, delay, immediate = false) {
// 实现
let timer=null;
let result=null;
return function(...args){
if(timer){
clearTimeout(timer);
timer=null;
}
if(immediate){
const callnow=!timer;
timer=setTimeout(()=>{
timer=null;
},delay);
if(callnow){
result=fn.apply(this,args);
}
}else{
timer=setTimeout(()=>{
result=fn.apply(this,args);
},delay)
}
return result;
}
}
function throttle(fn, limit) {
let timer = null;
let lastTime = 0;
return function(...args) {
const now = Date.now();
const remaining = limit - (now - lastTime);
// 清除之前的定时器
if (timer) {
clearTimeout(timer);
timer = null;
}
// 应该立即执行
if (remaining <= 0) {
fn.apply(this, args);
lastTime = now;
}
// 设置定时器延迟执行
else {
timer = setTimeout(() => {
fn.apply(this, args);
lastTime = Date.now();
timer = null;
}, remaining);
}
};
}