Начните опрос, когда флаг станет истинным - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу начать опрос, когда значение атрибута становится истинным, есть ли способ начать опрос, когда флаг становится истинным, сейчас моя реализация:

 ngOnInit(){
        //want to start when startedPoll becomes true otherwise dont
        let url = 'getStatus'
        this.pollingSubscribe = interval(5000).pipe(
          switchMap(() => this.http.getCall(url))
        ).subscribe(data => {
          if(data['success']) {
            this.pollingData =data['result']

            this.processData(this.pollingData)
          }

        }, error =>{
          this.error = true;
          this.errorData = this.createPollingFiles;
        })
      }

startPoll(){
  this.startedPoll = true;
}

, когда startPoll становится true начать опрос данных, пожалуйста, не предлагайте если и еще реализация

1 Ответ

0 голосов
/ 18 сентября 2018

Если единственный способ startedPoll стать true - это вызов метода startPoll, просто переместите вызов subscribe из вашего метода ngOnInit в startPoll:

ngOnInit() {
    // want to start when startedPoll becomes true otherwise dont
    let url = 'getStatus'
    this.pollingObservable = interval(5000).pipe(
        switchMap(() => this.http.getCall(url))
    );
}

startPoll() {
    this.pollingSubscribe = this.pollingObservable.subscribe(data => {
        if (data['success']) {
            this.pollingData = data['result']
            this.processData(this.pollingData)
        }
    }, error => {
        this.error = true;
        this.errorData = this.createPollingFiles;
    })
    this.startedPoll = true;
}

ngOnDestroy() {
    if (this.pollingSubscribe) {
        this.pollingSubscribe.unsubscribe();
    }
}

Убедитесь, что startPoll не вызывается более одного раза, когда опрос активен. В противном случае Subscription, который уже сохранен в this.pollingSubscribe, будет потерян, опрос будет удвоен по частоте,и некоторые опросы будут продолжаться после уничтожения компонента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...