21 lines
434 B
JavaScript
21 lines
434 B
JavaScript
const throttle = (fn, wait) => {
|
|
let inThrottle, lastFn, lastTime;
|
|
return function() {
|
|
const context = this,
|
|
args = arguments;
|
|
if (!inThrottle) {
|
|
fn.apply(context, args);
|
|
lastTime = Date.now();
|
|
inThrottle = true;
|
|
} else {
|
|
clearTimeout(lastFn);
|
|
lastFn = setTimeout(function() {
|
|
if (Date.now() - lastTime >= wait) {
|
|
fn.apply(context, args);
|
|
lastTime = Date.now();
|
|
}
|
|
}, wait - (Date.now() - lastTime));
|
|
}
|
|
};
|
|
};
|
|
module.exports = throttle; |