0
votes

I have a polling scenario like below where I'm polling every 1 secs to a rest API and waits for a result

interval(1000)
      .pipe(
        startWith(0),
        switchMap(() => this.itemService.getItems(shopId))
      )
      .subscribe(response => {
        console.log(response);
        
        if(response && response.status = false) {
            // stop polling
        }
        
        );
      });

polling part is working without an issue. The issue is I want the polling to stop when I get a response and its status is false. How to change this code to conditionally stop polling?

1

1 Answers

1
votes

U can use takeWhile

 Pool()
    {
      interval(1000)
      .pipe(
        startWith(0),
        switchMap(() => this.itemService.getItems(shopId)),
        takeWhile(response=> response.status == true) //takeWhile(response=> response.status)
      )
      .subscribe(response => {
    
      });

}