After lot of research I could came up with the following updated approach from RxJs' 6 with Angular 6.
The search API is called after each interval of 5 sec and unsubscribed once the count > 5 :
let inter=interval(5000)
let model : ModelComponent;
model=new ModelComponent();
model.emailAddress="mdshahabaz.khan@gmail.com";
let count=1;
this.subscriber=inter.pipe(
startWith(0),
switchMap(()=>this.asyncService.makeRequest('search',model))
).subscribe(response => {
console.log("polling")
console.log(response.list)
count+=1;
if(count > 5){
this.subscriber.unsubscribe();
}
});
API request :
makeRequest(method, body) : Observable<any> {
const url = this.baseurl + "/" + method;
const headers = new Headers();
this.token="Bearer"+" "+localStorage.getItem('token');
headers.append('Authorization', this.token);
headers.append('Content-Type','application/json');
const options = new RequestOptions({headers: headers});
return this.http.post(url, body, options).pipe(
map((response : Response) => {
var json = response.json();
return json;
})
);
}
Dont forget to unsubscribe to avoid memory leak.
ngOnDestroy(): void {
if(this.subscriber){
this.subscriber.unsubscribe();
}
}