retry

Reintenta una secuencia Observable un número determinado de veces en el caso de que ocurra un error

💡 retry es muy útil para reintentar peticiones HTTP

Signatura

Firma

retry<T>(count: number = -1): 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, este operador se resuscribirá al Observable fuente durante un máximo de count veces, antes de propagar el error.

Diagrama de canicas del operador retry

Todos los valores emitidos por el Observable fuente se emitirán en el Observable resultante, incluso aquellos que se emitan durante suscripciones fallidas. Por ejemplo, si un Observable emite los valores [1, 2] y falla, y al segundo intento consigue completarse, emitiendo los valores [1, 2, 3, 4, 5], las notificaciones del Observable resultante serían: [1, 2, 1, 2, 3, 4, 5, complete].

Ejemplos

Reintentar una petición Ajax 3 veces en el caso de que haya algún error

StackBlitz

import { retry } from "rxjs/operators";
import { ajax } from "rxjs/ajax";

const ghibliFilm$ = ajax.getJSON(`https://ghibliapi.herokuapp.com/fi`);

ghibliFilm$.pipe(retry(3)).subscribe(console.log, console.error);
// Salida: (error) Error: ajax error 404

Utilizar retry junto a catchError para que, en el caso de que los tres reintentos de la petición Ajax fallen, el flujo continúe en lugar de acabar en error.

StackBlitz

Ejemplo de la documentación oficial en inglés

Recursos adicionales

Source code

Documentación oficial en inglés

Last updated