rxjs的takeUntil不会通过自定义的unsubscribe()函数取消订阅

时间:2019-07-04 07:13:00

标签: angular rxjs pipe unsubscribe

在我的角度服务中,我有一个返回自定义退订功能的服务。 如果我直接退订,则称为,但如果我通过

退订
.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为主题 这样发出的

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

0 个答案:

没有答案