Angular: Keep HTTP GET Request Active for Response

Faraz Logo

By Faraz - June 07, 2023

Learn how to maintain an active HTTP GET request until receiving a response in Angular.


To keep the HTTP GET request active until you receive a response in Angular, you can make use of an Observable and the RxJS library. Here's an example of how you can achieve this:

First, import the necessary modules and services:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map, retryWhen, delay, take } from 'rxjs/operators';

Next, create a service to handle the HTTP request and keep it active:

@Injectable()
export class MyService {
  constructor(private http: HttpClient) {}

  public getActiveRequest(url: string): Observable<any> {
    return this.http.get(url).pipe(
      retryWhen(errors => errors.pipe(delay(1000), take(10))),
      map(response => {
        // Process the response if needed
        return response;
      })
    );
  }
}

In the above code, the getActiveRequest method sends an HTTP GET request using the Angular HttpClient service. The retryWhen operator is used to retry the request in case of errors. In this example, it will retry the request 10 times with a delay of 1 second between each retry.

To use this service in your component, inject it and call the getActiveRequest method:

import { Component } from '@angular/core';
import { MyService } from './my.service';

@Component({
  selector: 'app-my-component',
  template: '<button (click)="sendRequest()">Send Request</button>'
})
export class MyComponent {
  constructor(private myService: MyService) {}

  public sendRequest(): void {
    const url = 'https://example.com/api/data';
    this.myService.getActiveRequest(url).subscribe(
      response => {
        // Handle the response here
        console.log(response);
      },
      error => {
        // Handle the error here
        console.error(error);
      }
    );
  }
}

In the above component, the sendRequest method is called when a button is clicked. It invokes the getActiveRequest method from the MyService and subscribes to the observable to receive the response or handle any errors.

By using the retryWhen operator with a delay and a maximum number of retries, you can keep the HTTP GET request active until you receive a response or the maximum number of retries is reached. Adjust the delay and maximum retries as per your requirements.

I hope you found the above information helpful. Please let me know in the comment box if you have an alternate answer πŸ”₯ and you can support me by buying me a coffee.

And don’t forget to sign up to our email newsletter so you can get useful content like this sent right to your inbox!

Thanks!
Faraz 😊

End of the article

Subscribe to my Newsletter

Get the latest posts delivered right to your inbox


Latest Post