How to retry a subscription when it fails?

Discussão em 'Angular' iniciado por tec, Janeiro 28, 2025.

  1. tec

    tec Guest

    Context: Working with Angular 9. I'm trying to wait the back-end to be available to receive requests. Meanwhile it's not, there is a progress bar loading.

    Issue: when the back-end is not yet available, the subscription fails immediately and enters the (error) callback function of the method .subscribe(), with a message like Http failure response for http://localhost:5555/api/info: 504 Gateway Timeout

    I did research a bit, and the examples I've found modify the service class where httpClient.get is present, to retry x times the request, but I can't do that as the ts service is auto generated.

    My 1st idea was to use while() loop and a flag, so each time (error) was executed, the flag would be false and then retry the subscription. But it would lead to a memory leak.

    checkIfBackendAvailable() {
    var backendAvailable = false;
    while(!backendAvailable){
    let subscription = this.infoService.getInfo().subscribe(
    (info) => {
    if (info) {
    backendAvailable = true;
    this.progressBarValue = 100
    // do somethings
    }
    }
    ,
    (error) => {
    clearTimeout(this.infoTimeOut);
    this.showMessage("back-end not available");
    this.stopLoadingBar();
    //do somethings
    }
    );
    }

    this.infoTimeOut = setTimeout(() => {
    if (!backendAvailable) {
    subscription.unsubscribe()
    this.showMessage("error");
    this.stopLoadingBar();
    }
    }, 120000);
    }

    Continue reading...

Compartilhe esta Página