retryWhen

Reintenta una secuencia Observable cuando ocurre un error

chevron-rightSignaturahashtag

Firma

retryWhen<T>(notifier: (errors: Observable<any>) => Observable<any>): MonoTypeOperatorFunction<T>

Parámetros

Retorna

MonoTypeOperatorFunction<T>: El Observable fuente modificado con la lógica de reintento.

Descripción

Retorna un Observable que refleja el Observable fuente con la excepción de un error. Si el Observable fuente lanza un error, retryWhen emitirá el Throwable que provocó el error al Observable retornado por notifier. Si ese Observable hace una llamada a complete o a error, entonces este operador llamará a complete o a error en la suscripción hija. En caso contrario, retryWhen se resuscribirá al Observable fuente.

Diagrama de canicas del operador retryWhen

Ejemplos

Reintentar una secuencia Observable tras esperar un tiempo determinado, sin un número limitado de intentos

StackBlitzarrow-up-right

import { interval, timer, throwError } from "rxjs";
import { map, tap, retryWhen, delay } from "rxjs/operators";

const number$ = interval(1000);
const delayMilliseconds = 3000;

number$
  .pipe(
    map((n) => {
      if (n > 5) {
        throw "Número demasiado alto";
      }
      return n;
    }),
    retryWhen((error$) =>
      error$.pipe(
        tap((err) => console.log(`Ha ocurrido un error: ${err}`)),
        // Reintentar después de 3s
        delay(delayMilliseconds)
      )
    )
  )
  .subscribe(console.log);
// Salida: 0, 1, 2, 3, 4, 5, Ha ocurrido un error: Número demasiado alto (3s después se repite el proceso) 0, 1...

Reintentar una secuencia Observable tras esperar un tiempo determinado, con un número limitado de intentos

StackBlitzarrow-up-right

Recursos adicionales

Source codearrow-up-right

Documentación oficial en inglésarrow-up-right

Last updated