Javascript RxJS5中shareReplay(1)的模式
我已经开始使用RxJS5,现在看到不再有Javascript RxJS5中shareReplay(1)的模式,javascript,rxjs,Javascript,Rxjs,我已经开始使用RxJS5,现在看到不再有shareReplay方法了 很可能我经常在RxJS4中误用shareReplay,但现在我正努力获得我想要的行为,即: 创建一个可观察的 订阅可观察对象,可观察对象产生一个值 第二次订阅可观测值,我会得到相同的第一个值 Observable生成第二个值,两个订阅都获得第二个值 如何使用RxJS5实现这一点 总的来说,我认为我对RxJS操作符非常了解,但是整个冷、热、发布、连接对我来说是相当不清楚的。是否有一个很好的参考来说明如何找到我所拥有的哪种类型
shareReplay
方法了
很可能我经常在RxJS4中误用shareReplay
,但现在我正努力获得我想要的行为,即:
- 创建一个可观察的
- 订阅可观察对象,可观察对象产生一个值
- 第二次订阅可观测值,我会得到相同的第一个值
- Observable生成第二个值,两个订阅都获得第二个值
赤裸裸的文档:这个问题最好由参与Rxjs5的成员来回答,但以下是我的观点:
是具有shareReplay
的ReplaySubject
操作符,后跟multicast
。所以我敢打赌,refCount
应该非常接近publishReplay(x).refCount()
的行为。无论如何,shareReplay
已经给出了您提到的所有要点。当没有更多观察者时,publishReplay
添加取消订阅(refCount
减少到0)李>refCount
- 你可以看看这里的规格。请参见第127行之后的
,它应该相当于您的var replayed=source.publishReplay(1.refCount()
共享重播(1)
- 我想我们都希望有一个好的参考资料,说明如何找到我所拥有的可观察到的东西…。有很多地方,包括Rxjs4文档,您可以在其中找到有关热观测和冷观测的解释
- ,和是一些资源示例
- 受试者是热的(大多数情况下,你可能会认为重播受试者的行为更接近于冷的可观察对象)
- 除非另有明确规定,否则所有的观测都是冷的
- 在使冷可见热的显式方法中,有
操作符及其派生的多播
,共享
,发布
等。这些操作符内部都涉及主题共享重播
- 请注意,使用这些运算符时,不必对您可见。但是在这种情况下,API或文档应该明确地告诉您。例如,
是热的。您可以在它的实现中看到,在某个地方有一个Rx.Observable.fromEvent('input','click')
共享
- 在热/冷二分法中,您必须添加可连接的
类型,在连接之前,它既不热也不冷
总是会引起冷场延迟
- 最后,一些操作符不会改变可观察对象的性质,但会在内部创建热的可观察对象,并在流中传递它们。例如,
就是这样groupBy
是冷的,但它将在结果流中发出热的可观测值作为值。在这些情况下,只有文档(如果有)可以帮助您找到答案。否则,源代码和测试规范。或者这样问op1.op2.groupBy