Roy*_*mir 25 javascript rxjs angular
我已经知道了
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
Run Code Online (Sandbox Code Playgroud)
如果我不想要多个http
请求,我可以使用:
publishReplay().Connect()
但我也可以使用:shareReplay()
,但我确信这里有一个比另一个更正确.
题 :
我何时应该使用 publishReplay
vs shareReplay
?Http目前和未来的要求会有什么不同?
NB为什么没有关于的文档shareReplay
?
Dev*_*Rok 28
shareReplay()基本上是publishReplay().refCount()
当然不.
两者shareReplay
和publishReplay
(+呼唤connect
它)都会让它背后的观察变得热烈.
但它们之间非常重要的区别是:
shareReplay
:不管是否没有订阅,都不会停止发放直到它完成.publishReplay
:将在最后一个订阅者取消订阅后停止,如果与之一起使用refCount
Imho这是一个至关重要的信息.
Joe*_*ing 14
publishReplay
允许您控制订阅何时开始.shareReplay
将在第一次订阅时自动启动.
通常,如果将observable用于模板(html文件)中使用shareReplay
.优点是您不必担心取消订阅等.
shareReplay()
基本上是 publishReplay().refCount()
这是一篇很棒的文章,详细解释了这一点:“Angular Async Pipes?-注意共享”
编辑:
正确的说法是:
shareReplay()
类似于对publishReplay().refCount()
有关为什么它们不完全相同的更多信息,请参阅@DevRok 的答案。
归档时间: |
|
查看次数: |
6877 次 |
最近记录: |