Скажем, у меня есть следующий код: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
.
Вопрос в том, как избежать этого?