のは、私は次のコードを持っているとしましょう:それは生産FlatMapとサブジェクト - サブスクライバーの複製を避けるにはどうすればよいですか?
BehaviorSubject<Integer> subject = BehaviorSubject.create();
BehaviorSubject<Integer> subject2 = BehaviorSubject.create();
subject.
doOnNext(number -> subject2.onNext(number)).
flatMap(number -> subject2).
subscribe(number -> System.out.println("Number " + number));
for(int i = 0; i < 10; i++) {
subject.onNext(i);
}
出力は次のようになります。
Number 0
Number 1
Number 1
Number 2
Number 2
Number 2
Number 3
Number 3
Number 3
Number 3
Number 4
Number 4
Number 4
Number 4
Number 4
を、オン、オン。
なぜそれが起こるのか理解します。それは、flatMap
が呼び出されるたびに、新しいサブスクライバがsubject2
に追加されるためです。
質問です - これを避ける方法は?