UNPKG

backoff-rxjs

Version:

A collection of helpful RxJS operators to deal with backoff strategies (like exponential backoff)

13 lines (12 loc) 756 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.intervalBackoff = void 0; const rxjs_1 = require("rxjs"); const utils_1 = require("../utils"); function intervalBackoff(config, scheduler = rxjs_1.asyncScheduler) { let { initialInterval, maxInterval = Infinity, backoffDelay = utils_1.exponentialBackoffDelay, } = typeof config === 'number' ? { initialInterval: config } : config; initialInterval = initialInterval < 0 ? 0 : initialInterval; return (0, rxjs_1.of)(0, scheduler).pipe((0, rxjs_1.expand)((iteration) => (0, rxjs_1.timer)((0, utils_1.getDelay)(backoffDelay(iteration, initialInterval), maxInterval)) .pipe((0, rxjs_1.mapTo)(iteration + 1)))); } exports.intervalBackoff = intervalBackoff;