Skip to content

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

License

Notifications You must be signed in to change notification settings

alex-okrushko/backoff-rxjs

Repository files navigation

backoff-rxjs

A collection of helpful RxJS operators to deal with backoff strategies (like exponential backoff) Angular-in-Depth article about this library is at https://indepth.dev/power-of-rxjs-when-using-exponential-backoff/

intervalBackoff

Basic interval backoff

intervalBackoff works similarly to interval except that it doubles the delay between emissions every time.

nametypeattributedescription
confignumber \ IntervalBackoffConfigrequiredCan take number as initial interval or a config with initial interval, optional max Interval and optional backoff delay function (exponential by default)

interval is especially useful for periodic polls that are reset whenever user activity is detected:

fromEvent(document,'mousemove').pipe(// There could be many mousemoves, we'd want to sample only// with certain frequencysampleTime(LOAD_INTERVAL_MS),// Start immediatelystartWith(null),// Resetting exponential intervalswitchMapTo(intervalBackoff({initialInterval: LOAD_INTERVAL_MS,maxInterval: MAX_INTERVAL_MS})));

retryBackoff

Retry Backoff Exponential Image

nametypeattributedescription
confignumber \ RetryBackoffConfigrequiredCan take number as initial interval or a config with initial interval, optional max Interval, optional max number of retry attempts, optional function to cancel reties and optional backoff delay function (exponential by default)
this.service.callBackend().pipe(retryBackoff({initialInterval: 100,maxRetries: 12,// 👇 resets retries count and delays between them to init valuesresetOnSuccess: true}))

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 7