Установите значения параметров таймера rxjs с условием

#javascript #angular #rxjs

Вопрос:

У меня есть функция JS в моем приложении angular, которая использует rxjs.

 executionCheck(): void {
  this.checkStatus = timer(5000, 25000)
    .pipe(
      switchMap(() => this.ngService.getData())
    ).subscribe(data => ...);
}
 

Я хотел бы динамически установить Timer задержку запуска.

это означает запуск синхронной функции, которая возвращает значение true или false. если true, установите таймер на 5000, в противном случае 0.

Ответ №1:

Вы могли бы сделать что-то вроде этого:

 executionCheck(): void {
  this.checkStatus = timer(getTimerDelay(someValue), 25000)
    .pipe(
      switchMap(() => this.ngService.getData())
    ).subscribe(data => ...);
}

getTimerDelay(someValue): number {
  //your logic to return either 5000 or 0
  // for example:
  if(someValue /*some logical condition*/){ 
    return 5000;
  } else {
    return 0;
  }
}