60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
|
/**
|
|||
|
1. 函数节流(分页加载点击事件使用)
|
|||
|
2. @param fn
|
|||
|
3. @param interval
|
|||
|
4. @returns {Function}
|
|||
|
5. @constructor
|
|||
|
*/
|
|||
|
export const Throttle = (fn, t) => {
|
|||
|
let last;
|
|||
|
let timer;
|
|||
|
let interval = t || 500;
|
|||
|
return function() {
|
|||
|
let args = arguments;
|
|||
|
let now = +new Date();
|
|||
|
//等待执行
|
|||
|
if (last && now - last < interval) {
|
|||
|
clearTimeout(timer);
|
|||
|
timer = setTimeout(() => {
|
|||
|
// fn.apply(this, args); //非立即执行,则在wait毫秒内的结束处执行,快速点击N下的时候不需要触发函数
|
|||
|
last = now;
|
|||
|
}, interval);
|
|||
|
} else {
|
|||
|
fn.apply(this, args);//立即执行,则在wait毫秒内开始时执行
|
|||
|
last = now;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 函数防抖 (搜索框搜索使用)
|
|||
|
* @param fn
|
|||
|
* @param delay
|
|||
|
* @returns {Function}
|
|||
|
* @constructor
|
|||
|
*/
|
|||
|
export const Debounce = (fn, t) => {
|
|||
|
let delay = t || 500;
|
|||
|
let timer;
|
|||
|
return function() {
|
|||
|
let args = arguments;
|
|||
|
if (timer) {
|
|||
|
clearTimeout(timer);
|
|||
|
}
|
|||
|
timer = setTimeout(() => {
|
|||
|
timer = null;
|
|||
|
fn.apply(this, args);
|
|||
|
}, delay);
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
export const Debounce2 = (fn, t) => {
|
|||
|
let time = t || 500;
|
|||
|
let timeout = null;
|
|||
|
return function() {
|
|||
|
clearTimeout(timeout)
|
|||
|
timeout = setTimeout(() => {
|
|||
|
fn.apply(this, arguments);
|
|||
|
}, time);
|
|||
|
}
|
|||
|
};
|