多播粘性可观察到具有on subscription / on处置行为

时间:2018-08-04 06:02:51

标签: rx-java2

我正在尝试创建具有以下特征的Observable

  1. 允许多个并发和/或连续订阅者
  2. 向每个新订户发出最后发出的物品
  3. 当第一个订阅者订阅时,以及最后一个订阅被撤消时,

具有BehaviorSubject / doOnSubscribe的{​​{1}}满足#1和#2,但对每个订户(而不是第一个和最后一个)运行订阅/处置。添加doOnDispose可以满足#1和#3的要求,但只会将最后发出的项目发送给第一个并发订户。

我想出了一个似乎可行的解决方案,但感觉就像一个丑陋的骇客:

share

是否存在可以达到相同效果的运算符或运算符组合?

1 个答案:

答案 0 :(得分:1)

使用replay运算符和参数1,即

yourObservable.replay(1)

编辑:您是对的,重放将返回一个connectedObservable,而refcount运算符将使其表现得像在Observable上一样,即

yourObservable.replay(1).refcount()