@nick-bull/rxjs-backoff
TypeScript icon, indicating that this package has built-in type declarations

0.1.1 • Public • Published

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 similiarly to interval except that it doubles the delay between emissions every time.

name type attirbute description
config number | IntervalBackoffConfig required Can 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 frequency
  sampleTime(LOAD_INTERVAL_MS),

  // Start immediately
  startWith(null),

  // Resetting exponential interval
  switchMapTo(
    intervalBackoff({
      initialInterval: LOAD_INTERVAL_MS,
      maxInterval: MAX_INTERVAL_MS
    })
  )
);

retryBackoff

Retry Backoff Exponential Image

name type attirbute description
config number | RetryBackoffConfig required Can 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 values
     resetOnSuccess: true
    })
 )

Package Sidebar

Install

npm i @nick-bull/rxjs-backoff

Weekly Downloads

5

Version

0.1.1

License

MIT

Unpacked Size

46 kB

Total Files

39

Last publish

Collaborators

  • nick-bull