Sagen, ich möchte eine Observable
in RxJava machen, die eine Feedback-Kopplung wie auf dem Bild unten hat.RxJava: Erstellen Sie einen eigenständigen Stream
Ich habe es geschafft, dass bei der Verwendung von Probanden zu erreichen, wie folgt aus:
// Observable<Integer> source = Observable.range(0, 6);
public Observable<Integer> getFeedbackSum(Observable<Integer> source) {
UnicastSubject<Integer> feedback = UnicastSubject.create();
Observable<Integer> feedbackSum = Observable.zip(source, feedback.startWith(0), Pair::create)
.map(pair -> pair.first + pair.second);
feedbackSum.subscribe(feedback);
return feedbackSum;
}
Es ziemlich hässlich aussieht. Gibt es einen besseren Weg?
Es gibt einen Operator dafür: ['scan'] (http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Observable.html#scan (R,% 20io.reactivex. Funktionen.BiFunktion)). – akarnokd
Ja, total übersehen. Danke, @akarnokd! – 4emodan