Nehmen wir an, ich habe zwei unendliche Observables, die jederzeit Werte ausgeben können. Sie kombinieren, um eine Observable<ProcessFileEvent>
zu erstellen.RxJava - CombineNeueste, aber nur Feuer für eine Observable-Emission?
Observable<Integer> selectedFileId= ...
Observable<MouseClick> buttonClick = ...
Observable<ProcessFileEvent> `processFileEvent` = Observable.combineLatest(selectedFileId, buttonClick, (s,b) -> {
//create ProcessFileEvent here
});
Das Problem ist, ich will nur das processFileEvent zu emittieren, wenn buttonClick
etwas abgibt, nicht selectedFileId
. Es ist definitiv nicht das Verhalten, das ein Benutzer erwartet, wenn eine Datei-ID eingegeben wird, und es startet eine ProcessFileEvent
. Wie kombiniere ich aber nur wenn die buttonClick
ausstrahlt?
Dies ist sinnvoll. Eine kurze Frage. Basiert 'distinct()' auf 'hashcode()/equals()' für jedes ausgegebene Objekt oder unterdrückt es Dupe-Sequenzen? – tmn
Ein HashSet wird intern verwendet. Wenn Sie hashCode()/equals() für MouseClick implementiert haben, ist es besser, was Sie wollen. Wenn Sie sie nicht implementiert haben, wird nur die Objektreferenzgleichheit verwendet. Oh, das ist Overkill Ich habe gerade erkannt, dass wir distinctUntilChanged verwenden müssen. Ich werde aktualisieren. –
Nun, da distinctUntilChanged verwendet wird, ist kein HashSet beteiligt, aber die equals() -Methode wird für die separate Prüfung verwendet, so dass Sie sich immer noch wie gewünscht hashCode()/equals() verhalten müssen. –