共享未取消订阅的运营商

时间:2017-12-13 12:52:43

标签: rxjs

我需要延迟加载一些无限的流,因为它们开始很昂贵。而且,出于同样的原因,我也不想阻止他们。

我认为如果有share运营商在第一次订阅后没有取消订阅基础流,即使所有下游订阅者取消订阅,我都会认为这样会很好

现在我正在使用发布和两个不同的连接线来完成它,这可以正常工作,但看起来很笨重而且不是很像rxjs:

public data$(): Observable<any> {
    if (this.lazyData$) {
        return this.lazyData$;
    }

    this.lazyData$ = this.someDataProvider.data$()
    .publishReplay(1);

    this.lazyData$.connect();

    return this.lazyData$;
}

此外,我希望它能够向新订阅者重播最后一条消息,如您所见:)

1 个答案:

答案 0 :(得分:2)

shareReplay运算符已添加到RxJS version 5.4.0中。并且,在version 5.5.0 a bug was fixed中,以便在订户数量降至零时保持其历史记录。

使用此修复程序,shareReplay将影响您要查找的行为,因为它现在只有在源完成或错误时才会取消订阅源。当共享可观察量的订户数量降至零时,共享可观察量将保持订阅源。