retryWhen
Reintenta una secuencia Observable cuando ocurre un error
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.

Ejemplos
Reintentar una secuencia Observable tras esperar un tiempo determinado, sin un número limitado de intentos
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
Recursos adicionales
Last updated