soiz1's picture
Upload 2891 files
6bcb42f verified
raw
history blame contribute delete
500 Bytes
export default class RateLimiter {
constructor(wait) {
this.timeout = null;
this.callback = null;
this.wait = wait;
}
abort(call = true) {
if (this.timeout) {
clearTimeout(this.timeout);
if (call) this.callback();
this.timeout = this.callback = null;
}
}
limit(callback) {
this.abort(false);
this.callback = callback;
this.timeout = setTimeout(() => {
this.timeout = this.callback = null;
callback();
}, this.wait);
}
}