typescript - 如何停止 rxjs 定时器

标签 typescript timer rxjs

我有以下计时器:

setCountDown() {
        let counter = 5;
        let tick = 1000;
        this.countDown = timer(0, tick)
        .pipe(
          take(counter),
          map(() => --counter),
          finalize(() => {
            if (this.currentQuestionNumber < this.questionsToAsk)
              this.showNextQuestion();
            else {
              this.endQuiz();
            }

          })
        );
      }

如何停止计时器?例如。当用户点击按钮时...

最佳答案

假设你使用的是angular,如果你只使用javascript,你可以只使用fromEvent()来创建userClick

userClick=new Subject()

click(){userClick.next()}

setCountDown() {
        let counter = 5;
        let tick = 1000;
        this.countDown = timer(0, tick)
        .pipe(
          take(counter),
          map(() => --counter),
          takeUntil(userClick),
          finalize(() => {
            if (this.currentQuestionNumber < this.questionsToAsk)
              this.showNextQuestion();
            else {
              this.endQuiz();
            }

          })
        );
      }

关于typescript - 如何停止 rxjs 定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54810643/

相关文章:

javascript - RxJS 中的 Rx.Observable.ForkJoin 和并行异步(使用 X-Ray)

Angular 2和rxjs : ngIf according to a Subject

javascript - 在 Angular 应用程序中使用 AngularJS 组件时出错 : "Error: Trying to get the AngularJS injector before it being set."

javascript - 为计时器添加开始、停止、重置按钮

javascript - Angular - 在当前 ts 文件中包含额外的 ts 文件

python - Threading.Times 不起作用

c# - Xamarin.Forms 中的 Device.StartTimer 与 System.Threading.Timer

javascript - 什么是 "callback hell"以及 RX 如何以及为何解决它?

typescript - 使用 typescript 向 AWS Elasticsearch Service 发出签名请求

javascript - 数组上是否有某种返回 [item | ] 的 find 方法未定义] 而不是项目 |不明确的?