Package Exports
- backoff-rxjs
- backoff-rxjs/dist/esm5/index.js
- backoff-rxjs/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (backoff-rxjs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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
intervalBackoff
works similarly to interval
except that it doubles the delay between emissions every time.
name | type | attribute | 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
name | type | attribute | 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
})
)