1

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

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

4

1 回答 1

1

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

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

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

于 2017-01-30T12:15:56.140 回答