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

Ell*_*iot 4 subscription observable rxjs angular

我正在使用接受的模式来取消订阅我的订阅:

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

ngOnDestroy() {
    this.ngUnsubscribe.next();
    this.ngUnsubscribe.complete();
}
Run Code Online (Sandbox Code Playgroud)

但是,我在使用以下 rxjs 代码时遇到问题takeUntilcombineLatest

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

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

Jos*_*han 6

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

combineLatest(
    this.observableB$,
    this.observableC$
),
takeUntil(this.ngUnsubscribe)
Run Code Online (Sandbox Code Playgroud)