UNPKG

pusher-js

Version:

Pusher JavaScript library for browser, React Native, NodeJS and web workers

49 lines (43 loc) 1.16 kB
import {OneOffTimer as Timer} from '../utils/timers'; import Strategy from './strategy'; import StrategyOptions from './strategy_options'; /** Runs substrategy after specified delay. * * Options: * - delay - time in miliseconds to delay the substrategy attempt * * @param {Strategy} strategy * @param {Object} options */ export default class DelayedStrategy implements Strategy { strategy: Strategy; options: {delay: number}; constructor(strategy : Strategy, {delay : number}) { this.strategy = strategy; this.options = {delay : number}; } isSupported() : boolean { return this.strategy.isSupported(); } connect(minPriority : number, callback : Function) { var strategy = this.strategy; var runner; var timer = new Timer(this.options.delay, function() { runner = strategy.connect(minPriority, callback); }); return { abort: function() { timer.ensureAborted(); if (runner) { runner.abort(); } }, forceMinPriority: function(p) { minPriority = p; if (runner) { runner.forceMinPriority(p); } } }; } }