mit dem folgenden Beispiel (Kotlin Code)Observable Operator Hinrichtungen
val subject = PublishSubject.create<Int>()
val stream = subject.map {
println("mapping")
it * 2
}
stream.forEach { println("A: $it") }
stream.forEach { println("B: $it") }
subject.onNext(1)
subject.onCompleted()
Ausgang wird wieder zu verwenden sein
mapping
A: 2
mapping
B: 2
, was ich will erreichen, dass Quelle beobachtbaren abgebildet einmal werden und alle Teilnehmer Holen Sie sich das Ergebnis, aber nicht die Mapping-Operation für jede einzelne von ihnen ausführen ...
so
mapping
A: 2
B: 2
In meinem Fall habe ich sehr teuer Berechnung geht, wo Latenz und Leistung kritisch, ich habe eine heiße beobachtbaren als Quelle und viele Abonnenten ...
Wie Wiederverwendung wir Betreiber Hinrichtungen? und generell verschiedene Mapping-Operationen?
oh mein Gott das ist wirklich schlecht, ich habe nur Quellen für Betreiber überprüft, jeder einzelne Teilnehmer führt alles in der Kette ... cache tut nicht das, was ich suche, ich möchte nicht alle emissionen irgendwo speichern, ich will nur berechnen und propagate an alle anstatt für jeden berechnen :( – vach
ich weiß, dass dies um einen Gefallen bitten, aber bitte Kopiere und modifiziere die OperatorMap (basic mapping operator), so dass sie den Transformer nur einmal aufruft ... Ich muss nur sehen, was der richtige Weg ist ... wenn – vach
Debugging in den Workflow ist, scheint es, als ob ich falsch liege zu verstehen, wie dies funktioniert, Originalquelle beobachtbar hat zwei Beobachter, so dass die Abteilung kommt direkt von der Wurzel, wo ich erwartet, dass es einen Teilnehmer haben und das seinerseits hat andere 2 ... – vach