RxJava 並行でリクエストをして, リクエストした順番で値を受け取る

結論

concat, concatEager

RxJavaにはconcatEagerと, concatオペレータがあります. 似た名前ですが, 振る舞いは異なります. concatEagerはconcatと違い, 並列にObservableは処理するけど, 返してくる順番は保証されています

コードで説明すると,

// o1 ----> |
// o2       |------>|
//          |       |
//  s ------o1------o2
Observable.concat(o1, o2)
 .subscribe();
// o1 ----------->|
// o2 -->---------|-|
//                | |
//  s ------------o1-o2
Observable.concatEager(o1, o2)
 .subscribe();

みたいな感じになります. 繰り返しになりますが ,concatEagerは同時に与えたObservableを解釈し, 順番を守ってくれます.

Written by