UNPKG

@supabase/realtime-js

Version:
39 lines 1.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * 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 */ 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)); } } exports.default = Timer; //# sourceMappingURL=timer.js.map