UNPKG

@supabase/realtime-js

Version:
36 lines 1.19 kB
/** * Creates a timer that accepts a `timerCalc` function to perform calculated timeout retries, such as exponential backoff. * * @example * let reconnectTimer = new Timer(() => this.connect(), function(tries){ * return [1000, 5000, 10000][tries - 1] || 10000 * }) * reconnectTimer.scheduleTimeout() // fires after 1000 * reconnectTimer.scheduleTimeout() // fires after 5000 * reconnectTimer.reset() * reconnectTimer.scheduleTimeout() // fires after 1000 */ export default class Timer { constructor(callback, timerCalc) { this.callback = callback; this.timerCalc = timerCalc; this.timer = undefined; this.tries = 0; this.callback = callback; this.timerCalc = timerCalc; } reset() { this.tries = 0; clearTimeout(this.timer); this.timer = undefined; } // Cancels any previous scheduleTimeout and schedules callback scheduleTimeout() { clearTimeout(this.timer); this.timer = setTimeout(() => { this.tries = this.tries + 1; this.callback(); }, this.timerCalc(this.tries + 1)); } } //# sourceMappingURL=timer.js.map