防抖与节流
防抖:在事件停止触发之后的一定时间后,执行某些操作;如输入框不断输入,在停止输入后的一定时间后执行ajax请求,这就是防抖;避免了每输入一次执行一次ajax请求,减少ajax请求数量。 节流:每隔一段时间执行一次操作;如按钮点击事件,不管用户点击多少次,点击频率如何,每秒只执行一次;防止用户频繁点击,发起大量ajax请求。
防抖
/**
* @author 王冲
* @description 防抖函数
* @param 参数1 fn 传入一个函数,在输入框停止输入后的delay毫秒后执行
* @param 参数2 delay 延迟的时间 默认500毫秒
*/
export const debounce = (fn,delay = 500) => {
let timer = null;
return function(){
if(timer){
clearTimeout(timer);
}
timer = setTimeout(fn,delay);
}
}
节流
/**
* @author 王冲
* @param {*} fn 传入一个函数,每delay毫秒执行一次
* @param {*} delay 多好毫秒执行一次,默认1000毫秒
* @returns
*/
export const throttle = (fn,delay = 1000) => {
let timer = null;
return function(){
if(timer){return;}
timer = setTimeout(() => {
fn();
timer = null;
},delay);
}
}