0
CombineLatest
在兩個可觀察對象都已啓動時開始。Rx合併+ CombineLatest?
A 1----------2---------------
B -----a----------b---c------
C -----1a----2a---2b--2c----- C = A.CombineLatest(B)
Merge
運算符在A或B啓動時啓動。但是,它不能合併A和B的最新值。
A 1----------2---------------
B -----a----------b---c------
C 1----a-----2----b---c------ C = A.Merge(B)
我需要一個操作行爲相似,但Merge
它會允許我結合A和B的最新值時,都觀察到已經開始:
A 1----------2---------------
B -----a----------b---c------
C 1----1a----2a---2b--2c----- C = A.MergeOrCombineLatest(B)
其標誌可能是這樣的:
Observable<C> MergeOrCombineLatest<A, B, C>(
this IObservable<A> a,
IObservable<B> b,
Func<A, C> aResultSelector, // When A starts before B
Func<B, C> bResultSelector, // When B starts before A
Func<A, B, C> bothResultSelector) // When both A and B have started
該運算符如何實現?
謝謝你,這是一個非常好的解決方案。我想我不會選擇一個「特殊值」,而是將每個元素都放在一個「Tuple」裏面,布爾值表示它是否是起始元素。非常感謝您的幫助! –
對於特殊值,使用'Maybe' monad對於特殊值會很棒 - 這可以使用值類型或將null值設爲允許值。 –
Enigmativity