我需要延迟加载一些无限的流,因为它们开始很昂贵。而且,出于同样的原因,我也不想阻止他们。
我认为如果有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$;
}
此外,我希望它能够向新订阅者重播最后一条消息,如您所见:)
答案 0 :(得分:2)
shareReplay
运算符已添加到RxJS version 5.4.0中。并且,在version 5.5.0 a bug was fixed中,以便在订户数量降至零时保持其历史记录。
使用此修复程序,shareReplay
将影响您要查找的行为,因为它现在只有在源完成或错误时才会取消订阅源。当共享可观察量的订户数量降至零时,共享可观察量将保持订阅源。