this thread準拠conCatMapとフラットマップは、アイテムが発行される順序によって異なります。だから私はテストを行い、整数の単純なストリームを作成し、どのような順序でそれらが放出されるのか見たいと思った。私は、1から5までの範囲の数字をとり、2つずつ複数の数値を取る小さな観測値を作った。簡単です。ここでRxJava - flatmapとconcatMap - なぜサブスクリプションで同じものを注文していますか?
はflatmapとコードです:
myObservable.flatMap(new Func1<Integer, Observable<Integer>>() {
@Override
public Observable<Integer> call(Integer integer) {
return Observable.just(integer * 2);
}
}).subscribe(new Observer<Integer>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Integer integer) {
Log.v("myapp","from flatMap:"+integer);
}
});
とconcatMapを使用して、まったく同じコード:
myObservable.concatMap(new Func1<Integer, Observable<Integer>>() {
@Override
public Observable<Integer> call(Integer integer) {
return Observable.just(integer * 2);
}
}).subscribe(new Observer<Integer>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Integer integer) {
Log.v("myapp","from concatmap:"+integer);
}
});
私は順序が両方とも同じであったログにプリントアウトを見たとき、なぜ?私はconcatMapだけが順序を保持すると思った?
リンクを修正してください。 https://tomstechnicalblog.blogspot.com/2015/11/rxjava-achieving-parallelization.htmlにする必要がありますか? –
@XiaoPeng完了、ありがとう –