js节流函数 + 频繁点击处理
/**
* @param {Function} fn 节流的事件函数
* @param {Number} delay 延时一定时间
* @param {Function} handleFn 频繁点击处理函数
* @param {Number} frequency 一定时间内 点击几次 触发处理函数
*/
function throttle (fn, delay = 500, handleFn, frequency = 3) {
let last = 0; // 上一次点击时间
let hits = 0; // 点击次数
return function (...args) {
const now = Date.now();
if (now - last > delay) {
fn.apply(this, args); // 和上一次点击时间差大于delay500ms, 才执行函数
last = now;
hits = 0;
}
hits++;
if (hits == frequency && typeof(handleFn) === 'function') {
handleFn.apply(this, args);
}
}
}