9

根据 RxJS 5 MIGRATION.md,它看起来像是shareReplay()被删除了。

  1. 为什么?
  2. 是否.publishReplay(1).refCount()忠实地复制了行为?基本上我需要向任何新订阅者重播单个最新数据集。
4

2 回答 2

14

好消息,shareReplay()RxJS 5.4.0 又回来了: https ://github.com/ReactiveX/rxjs/blob/892700dd4f5d5e5f9ae9276ede32208f4390c5e9/CHANGELOG.md#540-2017-05-09

于 2017-07-19T10:20:53.907 回答
8

简短的回答:引用布莱什爵士的话:

RxJS 5 试图解决的问题是 ConnectableObservables 应该是“可重新连接的”,并且refCount应该返回一个在订阅之前是冷的,然后是热的,直到所有订阅都结束,然后再冷的 observable。

问题在于完成后主体的行为,这会阻止可连接的可观察对象在完成后重新连接。

长答案: https ://github.com/ReactiveX/RxJS/issues/453

当前的 API 似乎是重新连接问题的两种观点之间妥协的结果。如果相关人员能够对手头的问题进行总结,那就太好了。我的理解是.publishReplay(1).refCount()应该保持旧的行为,即当您的订阅者数量达到0时,源断开,您无法重播。但是不要相信我的话,测试一下,我在讨论后迷路了。

于 2016-02-07T01:51:00.983 回答