retry

signature: retry(number: number): Observable

Retry an observable sequence a specific number of times should an error occur.


πŸ’‘ Useful for retrying HTTP requests!

πŸ’‘ If you only want to retry in certain cases, check out retryWhen!

πŸ’‘ For non error cases check out repeat!


Examples

Example 1: Retry 2 times on error

( StackBlitz | jsBin | jsFiddle )

// RxJS v6+
import { interval, of, throwError } from 'rxjs';
import { mergeMap, retry } from 'rxjs/operators';

//emit value every 1s
const source = interval(1000);
const example = source.pipe(
  mergeMap(val => {
    //throw error for demonstration
    if (val > 5) {
      return throwError('Error!');
    }
    return of(val);
  }),
  //retry 2 times on error
  retry(2)
);
/*
  output:
  0..1..2..3..4..5..
  0..1..2..3..4..5..
  0..1..2..3..4..5..
  "Error!: Retried 2 times then quit!"
*/
const subscribe = example.subscribe({
  next: val => console.log(val),
  error: val => console.log(`${val}: Retried 2 times then quit!`)
});

Additional Resources


πŸ“ Source Code: https://github.com/ReactiveX/rxjs/blob/master/src/internal/operators/retry.ts

Last updated