BehaviorSubject在发出后丢弃最后一个值

时间:2017-01-24 12:45:20

标签: rx-java behaviorsubject

任何人都知道BehaviorSubject的自定义实现会在订阅者使用它之后丢弃最后一个值吗?

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

1 个答案:

答案 0 :(得分:0)

我以这种方式解决了这个问题:

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

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