@onesy/utils
Version:
26 lines (23 loc) • 676 B
JavaScript
// every 100ms at least
const throttle = function (method) {
let interval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
let lastTime = 0;
let timeoutID;
return function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
const now = Date.now();
if (now - lastTime >= interval) {
lastTime = now;
method(...args);
} else {
clearTimeout(timeoutID);
timeoutID = setTimeout(() => {
lastTime = Date.now();
method(...args);
}, interval - (now - lastTime));
}
};
};
export default throttle;