使用takeUntil和combineLatest取消订阅rxjs observable不起作用

时间:2018-05-25 18:33:08

标签: angular rxjs observable subscription

我使用accepted pattern取消订阅我的订阅:

private ngUnsubscribe: Subject<void> = new Subject();

ngOnDestroy() {
    this.ngUnsubscribe.next();
    this.ngUnsubscribe.complete();
}

但是,我使用takeUntilcombineLatest来解决以下rxjs代码问题:

this.observableA$.pipe(
    takeUntil(this.ngUnsubscribe),
    combineLatest(
        this.observableB$,
        this.observableC$
    )
).subscribe(([A, B, C]) => {
    // do some work   
})

此订阅似乎是持久的,因为我可以看到代码在销毁并重新初始化后多次触发。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您的内部observableB和observableC未取消订阅。尝试重新安排运营商:

combineLatest(
    this.observableB$,
    this.observableC$
),
takeUntil(this.ngUnsubscribe)