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));
}
Http Basic
Lo que aprenderás para consumir API con Angular
Solicitudes GET
Detalle de producto
Implementando slides
Solicitudes POST
Solicitudes PUT y PATCH
Solicitudes DELETE
Url Parameters / Paginación
Observable vs. Promesa
Reintentar una petición
Buenas prácticas
El problema de CORS
Manejo de ambientes
Manejo de errores
Transformar peticiones
Evitando el callback hell
Auth
Login y manejo de Auth
Manejo de headers
Uso de interceptores
Enviar Token con un interceptor
Creando un contexto a interceptor
Archivos
Descarga de archivos con Http
Subida de archivos con Http
Despedida
Continúa con el Curso de Angular Router y Programación Modular
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Gracias a los observables en conjunto con RxJS puedes fácilmente implementar funcionalidades que de lo contrario sería complejo desarrollar por tu cuenta.
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.
Contribución creada por: Kevin Fiorentino.
Aportes 6
Preguntas 2
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
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?