map: 对数据做转换,转换后的类型,会在subscribe里面使用。如果转换后的是个observable类型,怎么办?
Observable.just("1").map(new Func1<String, String[]>() {
@Override
public String[] call(String s) {
return new String[]{"2","3"};
}
}).subscribe(new Action1<String[]>() {
@Override
public void call(String[] strings) {
}
});
flatmap: 转换后必须是个observable类型,这样在subscribe里使用的就是Observable里面的类型。使用retrofit时,查询的结果经常是Observable类型,所以要用flatmap
Observable.just("1").flatMap(new Func1<String, Observable<String>>() {
@Override
public Observable<String> call(String s) {
return Observable.from(new String[]{"2","3"});
}
}).subscribe(new Action1<String>() {
@Override
public void call(String s) {
}
});
用map将一个数转成数组,在subscribe里接收到的也是个数组,它不会一个一个发给你。
用flatmap将一个数转成数组后包装在Observable里,在subscribe里就会一个一个接收到数组里的item