我已经开始玩RxJS5,现在看到不再有shareReplay方法了.
很可能我经常shareReplay在RxJS4中滥用,但现在我正在努力获得我想要的行为,即:
如何使用RxJS5实现此功能?
总的来说,我认为我对RxJS运算符非常了解,但对我来说,整个冷,热,发布,连接都不太清楚.有没有一个很好的参考,显示如何找到我有什么样的可观察,以便我可以以逻辑的方式找出为什么订阅没有获取值,或为什么一个observable被执行倍数?
编辑
快乐新闻,shareReplay()又回到了RxJS 5.4.0:
更新日志:https://github.com/ReactiveX/rxjs/blob/892700dd4f5d5e5f9ae9276ede32208f4390c5e9/CHANGELOG.md#540-2017-05-09
Barebones文档:http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-shareReplay
use*_*222 22
参与Rxjs5的成员最能回答这个问题,但这是我的看法:
shareReplay是a的multicast运算符ReplaySubject,后跟a refCount.所以我敢打赌,这publishReplay(x).refCount()应该与shareReplay行为非常接近.无论如何,publishReplay已经给出了你提到的所有要点.refCount当没有更多观察者时(refCount减少到0),添加取消订阅.var replayed = source.publishReplay(1).refCount();,这应该等同于你的shareReplay(1).关于你的其余问题:
good reference that shows how to find what kind of observable I have....有许多地方,包括Rxjs4文档,您可以在其中找到有关冷热可观测量的解释.遵循我自己目前对此事的理解:
multicast运营商及其衍生物share,publish,shareReplay等这些运营商内部都涉及科目.Rx.Observable.fromEvent('input','click')很热.你可以在它的实现中看到有一个share地方.connectable直到它连接的那种,既不热也不冷.defer 总是会产生寒冷的可观察性.groupBy.op1.op2.groupBy很冷,但它会在结果流中发出热观察值作为值.在这些情况下,只有文档(如果有的话)可以帮助您找到答案.否则,源代码和测试规范.或者询问SO.| 归档时间: |
|
| 查看次数: |
3428 次 |
| 最近记录: |