verdnatura-chat/app/utils/throttle.js

23 lines
431 B
JavaScript
Raw Normal View History

2017-08-11 18:18:09 +00:00
export default function throttle(fn, threshhold = 250, scope) {
let last;
let deferTimer;
return (...args) => {
2017-08-11 18:18:09 +00:00
const context = scope || this;
const now = +new Date();
2017-08-11 18:18:09 +00:00
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);
}
};
}