function-performer
Version:
Performer providing API for debounce, throttle, deduplication and limiting functions
43 lines (42 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "Throttle", {
enumerable: true,
get: function() {
return Throttle;
}
});
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
class Throttle {
execute(config, func, ...args) {
return new Promise((resolve)=>{
if (!this._calls.has(func)) {
resolve(func(...args));
this._calls.add(func);
setTimeout(()=>{
this._calls.delete(func);
}, config?.interval ?? this._interval);
}
});
}
constructor(config){
_define_property(this, "_calls", void 0);
_define_property(this, "_interval", void 0);
this._calls = new Set();
this._interval = config?.interval ?? 0;
}
}