Rocket.Chat.ReactNative/app/utils/throttle.js

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);
}
};
}