2017-01-24 24 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值不接受爲有效發射值,而是用於編碼丟棄的作用最後一個值。

相關問題