如何停止间隔计时器?

时间:2019-03-16 22:51:55

标签: angular rxjs

在Angular 7中移动到另一个组件时如何停止间隔:

public s: Observable<any>;

this.s = interval(5000)
      .pipe(takeWhile(() => this.visitors.length > 0))
      .subscribe(() => {});

我试图在组件析构函数中停止间隔:

   ngOnDestroy() {
      this.s.unsubscribe();
  }

1 个答案:

答案 0 :(得分:2)

您犯了2个错误;让我来描述一下:

  • 调用subscribe()函数不会返回Observablepipe返回。
  • 使用unsubscribe不会停止间隔。

我使用setInterval代替间隔,例如:

timer: any;

ngOnInit() {
    this.timer = setInterval(() => {
        // here do whatever you want every 5 seconds
    }, 5000);
}

并使用clearInterval函数onDestroy;喜欢:

ngOnDestroy() {
    clearInterval(this.timer);
}