Как изменить значение в подписке? используя rxJS - PullRequest
0 голосов
/ 15 апреля 2020

я создаю таймер, и мне нужна ваша помощь, я только учусь angular & rx JS, и у меня есть вопрос по этому поводу

Я создаю таймер, у которого есть запуск, остановка, пауза, сброс

и btn reset должны «приостановить» мой таймер до 300мс

как это сделать? : D

мой таймер запуска fn c

startTimer() {
    this.intervalStream$ = interval(1000);
    this.sub = this.intervalStream$
        .subscribe((value) => {
          this.subscribeTimer = this.convertSeconds(this.timeLeft - value);
          this.currentTime = this.timeLeft - value;
        });
  }

и после этого запуска у меня

pause() {}

не могу понять, как это сделать: D

1 Ответ

0 голосов
/ 15 апреля 2020

Я создаю таймер с остановкой возобновления и паузой https://stackblitz.com/edit/angular-gq9zvk.

Ваши переменные

isstop = new Subject();
  ispause = new Subject();
  private time = 0;
  isRunning = true;
  timer: Observable<number>;
  timerObserver: PartialObserver<number>;

Этот установленный таймер вставляется в onInit или подключается, чтобы нажать функция запуска

this.timer = interval(1000)
      .pipe(
        takeUntil(this.ispause),
        takeUntil(this.isstop)
      );

    this.timerObserver = {
      next: (_: number) => {  
          this.time += 1;        
      }
    };


    this.timer.subscribe(this.timerObserver);

и это функции остановки и приостановки

goOn() {
    this.isRunning = true;
    this.timer.subscribe(this.timerObserver);
  }
  pauseClick() {
    this.ispause.next();
    this.isRunning = false;

  }

  stopClick() {
    this.time = 0;
    this.isRunning = false;
    this.isstop.next();
  }
...