I dont get rxjs 6 with angular 6 with interval, switchMap, and map
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();}
}