确保热观察所发出的所有项目仅消耗一次

时间:2017-05-10 17:45:02

标签: rx-java

我有:

  1. 一个热点可观察源,在某些时候发出一个项目 并完成
  2. 保持订阅/取消订阅的多个观察者 往返来源(但最多可以同时订阅 时间)
  3. 我想将源转换为一个可观察对象,以确保观察者将该项目消耗完全一次。稍后订阅的观察者应仅被通知该项目已被消费(完成事件)。

    预期行为:

    1)观察者订阅之前来源的排放

    --O-|------>  (source)
    
    -----^-O-|->  (observer)
    

    2)观察者订阅后来源的排放

    ------O-|->  (source)
    
    --^---O-|->  (observer)
    

    3)项目消费后的订阅

    -O-|------->  (source)
    
    -^-O-|----->  (observer1 - consumes the item)
    
    ------^-|-->  (observer2 - is notified that the item has been consumed)
    

    实现此类行为的最简单,最优雅的方法是什么?

1 个答案:

答案 0 :(得分:1)

使用BehaviorSubject。这完全描述了它的行为。