Typescript 角度6:如何取消订阅rsjx间隔或计时器?

Typescript 角度6:如何取消订阅rsjx间隔或计时器?,typescript,angular6,Typescript,Angular6,我认为问题很清楚。我找不到有关如何取消订阅rsjx-操作(如间隔或计时器)的任何信息 我的组成部分: public intervallTimer = interval(5000); ngOnInit() { this.getValues(); this.intervallTimer.subscribe(() => this.getValues()); } // What I like to do is something like this, but "unsubscribe(

我认为问题很清楚。我找不到有关如何取消订阅
rsjx
-操作(如
间隔或计时器)的任何信息

我的组成部分:

public intervallTimer = interval(5000);

ngOnInit() {
  this.getValues();
  this.intervallTimer.subscribe(() => this.getValues());
}

// What I like to do is something like this, but "unsubscribe()" that's no function
somefunction(){
  this.intervallTimer.unsubscribe()
}

subscribe
返回一个
subscribe
对象,该对象将
unsubscribe
作为方法。您有一个选择:

public intervallTimer = interval(5000);
private subscription;

ngOnInit() {
  this.getValues();
  this.subscription = this.intervallTimer.subscribe(() => this.getValues());
}

somefunction(){
  this.subscription.unsubscribe()
}
这要求您明确取消订阅,而您可能不想这样做。您也可以考虑使用<代码> Tube直到,它返回<代码>完整< /代码>代码>可观察的< /代码>,这将导致自动<代码>退订< /代码>。只需确保
takeUntil
已关闭


或者您可以使用
takeWhile(布尔)
来控制行为

this.intervallTimer.pipe(
      takeWhile(// your condition)
).subscribe(() => this.getValues()); 

您可以在

中找到文档,您需要
取消订阅
通过调用
.subscribe()
获得的
订阅
this.intervallTimer.pipe(
      takeWhile(// your condition)
).subscribe(() => this.getValues());