Отказ от подписки на RxJS observable с использованием takeUntil и combineLatest не работает
Я использую принятый шаблон для отмены подписки:
private ngUnsubscribe: Subject<void> = new Subject();
ngOnDestroy() {
this.ngUnsubscribe.next();
this.ngUnsubscribe.complete();
}
Однако у меня возникли проблемы со следующим кодом rxjs, использующим takeUntil и combineLatest:
this.observableA$.pipe(
takeUntil(this.ngUnsubscribe),
combineLatest(
this.observableB$,
this.observableC$
)
).subscribe(([A, B, C]) => {
// do some work
})
Эта подписка, по-видимому, сохраняется, так как я вижу, что код запускается несколько раз после того, как компонент уничтожен и повторно инициализирован. Любая помощь будет очень признательна.
1 ответ:
Ваши внутренние observableB и observableC не отписываются. Попробуйте перестроить операторы:
combineLatest( this.observableB$, this.observableC$ ), takeUntil(this.ngUnsubscribe)
Comments