我是Observables和Typescript的新手,所以这可能是一个新手问题。我想构建一个简单的计时器,但我希望能够取消订阅计时器本身内的所有订阅者。
到目前为止,我的代码看起来像这样。
import { Observable } from "rxjs/Rx";
export class Timer {
private interval: number;
private ticker: Observable<any>;
constructor() {
this.interval = 1000; // Miliseconds
this.ticker = Observable.interval(this.interval).timeInterval();
}
complete() {
// Unsubscribe all listeners
}
}
如何从complete
方法取消所有听众的支持?
答案 0 :(得分:1)
如果您没有Subscription
个对象(从.subscribe()
来电回复),则无法自行取消订阅观看者。
但是,您可以反过来使用takeUntil
运算符来完成源Observable,该运算符将处理链并取消订阅所有观察者。
constructor() {
this.end = new Subject();
this.ticker = Observable.interval(this.interval)
.takeUntil(this.end)
.timeInterval();
}
...
complete() {
this.end.next();
}