【发布时间】:2016-07-08 00:26:02
【问题描述】:
根据this thread,conCatMap 和 flatmap 仅在发射项目的顺序上有所不同。所以我做了一个测试并创建了一个简单的整数流,并想看看它们会以什么顺序发出。我做了一个小的 observable,它可以接收 1-5 范围内的数字并将它们乘以 2。简单。
这是带有平面图的代码:
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 会保留顺序?
【问题讨论】: