For the complete documentation index, see llms.txt. This page is also available as Markdown.

retryWhen

Reintenta una secuencia Observable cuando ocurre un error

Signatura

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

StackBlitz

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

StackBlitz

Recursos adicionales

Source code

Documentación oficial en inglés

Last updated