No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Reintentar una petición

10/23
Recursos

Gracias a los observables en conjunto con RxJS puedes fácilmente implementar funcionalidades que de lo contrario sería complejo desarrollar por tu cuenta.

Reintento automático de peticiones fallidas

Para reintentar peticiones HTTP, puedes hacer que automáticamente vuelva a realizar otro intento si este llegara a fallar. Sería muy complejo su desarrollo casero ya que hay que recurrir a la recursividad y asincronicidad al mismo tiempo.

// services/api.service.ts
import { retry } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class ApiService {

  constructor(
    private http: HttpClient,
  ) { }

  getProduct(idProduct: number): Observable<Product> {
    return this.http.get<Product>(`https://example.com/api/productos/${idProduct}`)
      .pipe(
        retry(2)
      );
  }

}

El método .pipe() de los observables permite manipular datos y con la función retry() de RxJS le indicas la cantidad de reintentos que buscas para que la petición lo haga en caso de fallar.

Código fuente del proyecto.


Contribución creada por: Kevin Fiorentino.

Aportes 6

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Reintentar una petición

Enviar de nuevo la petición al servidor n veces.

import { retry } from 'rxjs/operators';

getAllProducts() {
  return this.http.get<Product[]>(this.apiUrl)
    .pipe(retry(3));
}

RxJS lo es todo! desde que lo conocí, no pienso usar async await nunca más!

Sorprendente la abstracción que nos ofrece rxjs para reintentar solicitudes 😮.

Que maravilla, recuerdo que cuando entre a un trabajo anterior me hicieron ver Ionic3 y estaba esta sintaxis aunque recuerdo que era una version mas antigua de angular cerca de la 4 y yo no lograba entender bien esto de los pipes y los observables. Muy buena clase

Los miedos y las inseguridades que el impostor te susurra, solo existen en tu cabeza. Una vez empiezas a mover los dedos, empiezas a teclear una posible solución estarás más cerca de encontrarla que de no hacerlo y p r o c a s t i n a r.
.
Hoy procastine cerca de 4 horas porque realice cambios como swiper:, Http verbs (crud) y la clase de paginación, cada uno en diferentes ramas creadas especialmente para la clase por que tenía miedo de romper mi proyecto, por qué me paso en un primer intento de integrar swiper en main y tuve que hacer un git soft reset.
.
Después de una rápida pregunta a ChatGPT me dio directo los pasos para hacer merge. que eran demasiado directos que quiero llorar por las horas que cedí al impostor. Ahora cierro mi sesión con este buen sabor de boca, soy más capaz de lo que mi propia opinión de mí mismo me quiere dejar creer
.
Imagen de que bonito se ve integrar estos cambiios en main.

Se me ocurre que podría ser para un estado de carga que si no puede conectarse a la API te mostrara el estado de carga, hasta que haya terminado sus intentos con un delay de tiempo y una vez realizado todos los intentos, mostrar ahora si un mensaje o error, pero la pregunta sería como se podría implementar