how to put interval on retry call in Angular

Viewed 352

The following call makes like around 800 connection in 5 seconds, I want to make a connection every 5 seconds to reduce the number of connections. If I put retry(5) after 5 attempts it will stop and I may not have a successful result in 5 tries, thats why I need a time here I think.

  this.http.get(`api`)
 .pipe(retry())
 .subscribe(s=>{
   //result
  },error=>(error));

I don't know where should I put interval actually as far as I know it should come after subscribe but it seems this approach is not the right way.

2 Answers

You'd need to use the retryWhen operator with delay operator. Try the following

import { retryWhen, delay } from 'rxjs/operators';

this.http.get(`api`).pipe(
  retryWhen(error => error.pipe(delay(5000))
).subscribe(
  s => { 
    // result
  },
  error => {
    // handle error
  }
);

I have used similar functionality in one of my angualr application and worked out this way. Check if this helps.

this.subscription = interval(5000).subscribe(x => {
// API call goes here...
       
});

This code continously executes for every 5 seconds once and if you want to stop the timer then

this.subscription.unsubscribe();
Related