Skip to main content
Module

x/rxjs/mod.ts>retryWhen

Deno port of RXJS
Latest
function retryWhen
import { retryWhen } from "https://deno.land/x/rxjs@v1.0.2/mod.ts";

Returns an Observable that mirrors the source Observable with the exception of an error. If the source Observable calls error, this method will emit the Throwable that caused the error to the Observable returned from notifier. If that Observable calls complete or error then this method will call complete or error on the child subscription. Otherwise this method will resubscribe to the source Observable.

Retry an observable sequence on error based on custom criteria.

Example

import { interval, map, retryWhen, tap, delayWhen, timer } from 'rxjs';

const source = interval(1000);
const result = source.pipe(
  map(value => {
    if (value > 5) {
      // error will be picked up by retryWhen
      throw value;
    }
    return value;
  }),
  retryWhen(errors =>
    errors.pipe(
      // log error message
      tap(value => console.log(`Value ${ value } was too high!`)),
      // restart in 5 seconds
      delayWhen(value => timer(value * 1000))
    )
  )
);

result.subscribe(value => console.log(value));

// results:
// 0
// 1
// 2
// 3
// 4
// 5
// 'Value 6 was too high!'
// - Wait 5 seconds then repeat

Parameters

notifier: (errors: Observable<any>) => Observable<any>
  • Receives an Observable of notifications with which a user can complete or error, aborting the retry.

Returns

A function that returns an Observable that mirrors the source Observable with the exception of an error.