【发布时间】:2016-07-28 13:30:02
【问题描述】:
假设我有以下代码:
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。
问题是 - 如何避免这种情况?
【问题讨论】:
标签: java rx-java reactive-programming subject-observer behaviorsubject