Spaces:
Running
Running
File size: 500 Bytes
6bcb42f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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);
}
}
|