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