Rxjs 有什么理由在行为主体管道中使用shareReplay(1)吗?

Rxjs 有什么理由在行为主体管道中使用shareReplay(1)吗?,rxjs,Rxjs,我使用的库使用非常常见的BehaviorSubject模式公开来自服务类的数据。实现和我自己看到/使用的唯一显著区别是添加了一个带有shareReplay1操作符的管道。我不确定是否需要shareReplay。在这种情况下,shareReplay有什么影响(如果有的话) // "rxjs": "^6.3.0" this.data = new BehaviorSubject({}); this.data$ = this.data.asObservable().pipe( shareRepla

我使用的库使用非常常见的BehaviorSubject模式公开来自服务类的数据。实现和我自己看到/使用的唯一显著区别是添加了一个带有shareReplay1操作符的管道。我不确定是否需要shareReplay。在这种情况下,shareReplay有什么影响(如果有的话)

// "rxjs": "^6.3.0"
this.data = new BehaviorSubject({});
this.data$ = this.data.asObservable().pipe(
   shareReplay(1) 
)

注意:我读了很多关于shareReplay的文章,我看到了关于shareReplay和主题不同组合的问题,但不是这个特定的

不是在您的示例中,而是想象一下,如果映射函数中有一些复杂的逻辑转换了数据,那么共享重播将保存为每个订阅运行的复杂逻辑

const{BehaviorSubject}=rxjs; const{map,shareReplay}=rxjs.operators; const bs$=新行为主体“初始值”; 常量obs$=bs$管道 mapval=>{ console.log'mapping'; 返回“映射值”; }, 共享重播 ; obs$.subscribeval=>{console.logval;}; obs$.subscribeval=>{console.logval;};
不是在您的示例中,而是想象一下,如果映射函数中存在转换数据的复杂逻辑,那么共享重播将保存为每个订阅运行的复杂逻辑

const{BehaviorSubject}=rxjs; const{map,shareReplay}=rxjs.operators; const bs$=新行为主体“初始值”; 常量obs$=bs$管道 mapval=>{ console.log'mapping'; 返回“映射值”; }, 共享重播 ; obs$.subscribeval=>{console.logval;}; obs$.subscribeval=>{console.logval;}; 使用此模式使用shareReplay1时,服务保护自己不受用户使用BehaviorSubject的下一个函数的影响,同时发送BehaviorSubject的最后一个值,如果没有shareReplay1,情况将不会如此。

使用此模式使用shareReplay1时,服务在发送行为主体的最后一个值时保护自己不受用户使用行为主体的下一个函数的影响,如果没有shareReplay1,则不会出现这种情况。

a可观察到的保护不受使用下一个函数的影响,并且在有或没有ShareReplaya的情况下发出最后一个值可观察到的保护不受使用下一个函数的影响,最后一个值在有或没有shareReplay的情况下发出