防抖
/**
* 函数防抖模块
* 使用场景 搜索联想,window触发resize的时候,防止重复提交
* @param Function func 触发的事件
* @param Number delay 延迟时间
* @param Boolean flag 防抖效果后防抖 false 先防抖 true
*
* */
export function debounce(func, delay, flag) {
let timer;
return () => {
clearTimeout(timer);
if (flag) {
let bl = !timer;
timer = setTimeout(() => {
timer = null;
}, delay);
if (bl) {
func();
}
} else {
timer = setTimeout(() => {
func();
}, delay);
}
};
}
节流
/**
* 函数节流模块
* @param func 触发的事件
* @param delay 延迟时间
*/
export function throttle(func, wait) {
let previous = 0;
return () => {
let now = +new Date();
if (now - previous > wait) {
func();
previous = now;
}
};
}