Die CombineLatest
startet, wenn beide Observablen gestartet wurden.Rx Merge + CombateLatest?
A 1----------2---------------
B -----a----------b---c------
C -----1a----2a---2b--2c----- C = A.CombineLatest(B)
Die Merge
Operator beginnt, wenn entweder A oder B begonnen haben. Es kann jedoch die letzten Werte von A und B nicht kombinieren.
A 1----------2---------------
B -----a----------b---c------
C 1----a-----2----b---c------ C = A.Merge(B)
Ich brauche einen Operator wie Merge
außer dass verhält es mir erlauben würde, A und B neuesten Werte zu kombinieren, wenn beide beobachtbaren begonnen haben:
A 1----------2---------------
B -----a----------b---c------
C 1----1a----2a---2b--2c----- C = A.MergeOrCombineLatest(B)
Seine Unterschrift könnte wie folgt aussehen:
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
Wie könnte dieser Operator implementiert werden?
Danke, das ist eine sehr schöne Lösung. Anstatt einen "speziellen Wert" zu wählen, werde ich jedes Element in ein 'Tuple' einordnen, wobei der boolesche Wert anzeigt, ob es das Startelement ist oder nicht. Vielen Dank für Ihre Hilfe! –
Die Verwendung der 'Maybe' Monade wäre fantastisch für die speziellen Werte - dies würde ermöglichen, dass Werttypen verwendet werden oder dass "null" zulässige Werte sind. –
Enigmativity