rx.Observable.switchOnNext(Observable>)不像所描述的JavaDoc中的大理石图表那样工作。RxJava的switchOnNext方法不像JavaDoc描述的那样工作
如果我尝试下面
public static void main(String[] args) throws Exception {
Observable<Long> o1 = Observable.interval(200L, TimeUnit.MILLISECONDS);
Observable<Long> o2 = Observable.interval(500L, TimeUnit.MILLISECONDS)
.map(value -> value * 10);
Observable.switchOnNext(Observable.just(o1, o2)).subscribe(System.out::println);
Thread.sleep(2000L);
}
大理石图显示的结果可能会像下面。
| time | 0 | 200 | 400 | 500 | 1000 | 1500 |.....|
|--------|-----|------|-------|------|--------|------|-----|
| o1 | | 0 | 1 |.... | ... | ... | ... |
| o2 | | | | 0 | 10 | 20 | ... |
| result | | 0 | 1 | 0 | 10 | 20 | ... |
但结果变成0,10,20 ...等类似下面
| time | 0 | 200 | 400 | 500 | 1000 | 1500 |.....|
|--------|-----|------|-------|------|--------|------|-----|
| o1 | | 0 | 1 |.... | ... | ... | ... |
| o2 | | | | 0 | 10 | 20 | ... |
| result | | | | 0 | 10 | 20 | ... |
另外,如果我扭转O1给O2像Observable.just(o1, o2)
到Observable.just(o2, o1)
, 的结果将是仅发射了数值。
这是正确的行为?
如果是乙醚JavaDoc将是错误的或程序将是错误的,我会创建该问题。
或者,我是否误会了描述?
我使用RxJava 1.1.5
谢谢你的帮助!现在,我知道我误解了'switchOnNext'方法,并理解'switchOnNext'。由于观测数据是同时订阅的,结果并不符合我的预期。 – otal