backoff-rxjs

by alex-okrushko

alex-okrushko / backoff-rxjs

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

154 Stars 10 Forks Last release: Not found MIT License 48 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

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
    })
 )

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.