Spaces:
Running
Running
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); | |
} | |
} | |