22 lines
443 B
JavaScript
22 lines
443 B
JavaScript
|
export default function throttle(fn, threshhold = 250, scope) {
|
||
|
let last,
|
||
|
deferTimer;
|
||
|
return function() {
|
||
|
const context = scope || this;
|
||
|
|
||
|
let now = +new Date(),
|
||
|
args = arguments;
|
||
|
if (last && now < last + threshhold) {
|
||
|
// hold on to it
|
||
|
clearTimeout(deferTimer);
|
||
|
deferTimer = setTimeout(() => {
|
||
|
last = now;
|
||
|
fn.apply(context, args);
|
||
|
}, threshhold);
|
||
|
} else {
|
||
|
last = now;
|
||
|
fn.apply(context, args);
|
||
|
}
|
||
|
};
|
||
|
}
|