我认为问题很明确。我找不到有关如何退订rsjx
之类的interval or timer
操作的信息吗?
我的组件:
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()
}
答案 0 :(得分:1)
或者您可以使用takeWhile(Boolean)
来控制行为
this.intervallTimer.pipe(
takeWhile(// your condition)
).subscribe(() => this.getValues());
您可以从here
中找到文档答案 1 :(得分:0)
subscribe
返回一个以Subscription
作为方法的unsubscribe
对象。您可以选择的一种方法是:
public intervallTimer = interval(5000);
private subscription;
ngOnInit() {
this.getValues();
this.subscription = this.intervallTimer.subscribe(() => this.getValues());
}
somefunction(){
this.subscription.unsubscribe()
}
这要求您明确取消订阅,而您可能不想这样做。您也可以考虑使用takeUntil
,它返回complete
Observable
,这将导致自动unsubscribe
。只需确保takeUntil
是the last in any chain。
public intervallTimer = interval(5000);
private alive = true;
ngOnInit() {
this.getValues();
this.intervallTimer.pipe(takeUntil(() => !this.alive)).subscribe(() => this.getValues());
}
somefunction(){
this.alive = false;
}