我已经知道了
publish
共享一个订阅,同时返回一个ConnectableObservable
(所以我们必须Connect()
)Share()
是publish().refcount()
Replay
后缀非常明显,它会返回最后一次发出的值。
让我们以Angular HTTP请求为例,其中包含现有和未来的订阅:
<p>{{ (person | async)?.id }}</p> //present markup
<p *ngIf=”show”>{{ (person | async)?.userId }}</p> <!-- future markup -->
如果我不想有多个http
请求,我可以使用:
publishReplay().Connect()
但我也可以使用:shareReplay()
,但我确信有一种方法比另一种更正确。
问题:
在什么情况下应该使用publishReplay
而不是shareReplay
? 在当前和未来的HTTP请求方面有什么区别?
NB
为什么没有关于shareReplay
的文档?
shareReplay
的取消订阅行为):https://github.com/ReactiveX/rxjs/issues/3336 - 已在 https://github.com/ReactiveX/rxjs/pull/4059 中修复。 - Simon_Weaver