2017-01-24 18 views
0

任何人都知道BehaviorSubject的一个自定义实现,一旦订阅者使用它,它将丢弃最后一个值?BehaviorSubject发出后丢弃最后一个值

为什么这样的实现将是一个坏主意?

+0

那么你为什么使用BehaviorSubject改为使用PublishSubject。 –

+0

因为我希望价值坚持下去,直到有订户。 –

+0

对于多个同时订阅用户来说,你希望所有用户在到达时都能获得相同的价值吗?单个用户可以消费多少价值,还是在获得某个项目后立即取消订阅? –

回答

0

我砍死解决这个问题是这样的:

<T> Observable<T> discardOnceDelivered(BehaviorSubject<T> subject) { 
    return subject.filter(t -> t!=null).doOnNext(inputFields -> subject.onNext(null)); 
} 

(处于RX 1.x中)唯一的限制是null值不接受为有效发射值,而是用于编码丢弃的作用最后一个值。

相关问题