防抖:n秒内点击会重新计时,n秒后执行
节流:n秒内点击多次,只执行一次
// 可封装进公共方法使用
// 防抖
// fn 需要包裹的函数 time 间隔时间
export function debounce(fn,delay=200){
// 进入函数执行
let timeout = null;
// 返回函数
return function(...args){
// 判断是否执行过
if(timeout){
clearTimeout(timeout)
timeout = null
}
setTimeout(() => {
fn.apply(this,args)
}, delay);
}
}
调用debounce(fn,delay)
fn : 需要包裹的函数 delay: 间隔执行的时间
节流
export function throttle(fn, delay) {
let timer = null;
return function () {
if (timer) return;
timer = setTimeout(() => {
fn.apply(this, argument);
timer = 0;
}, delay);
};
}