取消订阅Observable

时间:2018-04-05 19:37:36

标签: javascript typescript rxjs

我是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方法取消所有听众的支持?

1 个答案:

答案 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();
}