rxjs 'takeUntil не отписывается через пользовательскую функцию unsubscribe () - PullRequest
0 голосов
/ 04 июля 2019

В моем угловом сервисе у меня есть сервис, возвращающий пользовательскую функцию отказа от подписки. Если я отписываюсь напрямую, это называется, но если я отписываюсь через

.pipeUntil(this.destroy$)

пользовательская функция отмены подписки не вызывается.

Функция сервиса (сокращенно)

myObservableFunction(): Observable<any[]> {
    return new Observable<any[]>((observer) => {
        const sub = this.authService.doGetRequest(`myRoute`)
            .subscribe(
                (d) => {
                    observer.next(e)
                },
                (e) => observer.error(e)
            );
        return {
            unsubscribe() {
                sub.unsubscribe();
            }
        };
    });
}

это вызывает sub.unsubscribe ():

this.myService.myObservableFunction()
    .subscribe()
    .unsubscribe()

это не так:

this.myService.myObservableFunction().pipe(takeUntil(this.destroy$)
    .subscribe()
    .unsubscribe()

$ destroy is Subject который излучается так

ngOnDestroy() {
    this.destroy$.next(true);
    this.destroy$.unsubscribe();
  }
...