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

23 lines
431 B
JavaScript

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