flatMap 运算符
flatMap
运算符可帮助你将一个事件转换为另一个事件(或将事件转换为零,一个或多个事件)。
当你想要调用另一个返回 Observable
的方法时,它是一个完美的运算符
public Observable<String> perform(int i) {
// ...
}
Observable.just(1, 2, 3)
.flatMap(i -> perform(i))
.subscribe(result -> System.out.println("result ->" + result);
flatMap
将序列化 perform
订阅,但 perform
发出的事件可能不会被订购。因此,你可能会在第一次 perform
调用的事件之前收到上次执行调用所发出的事件(你应该使用 concatMap
代替)。
如果你在订阅者中创建另一个 Observable
,则应使用 flatMap
代替。主要思想是: 永远不要离开 Observable
例如 :
Observable.just(1, 2, 3)
.subscribe(i -> perform(i));
可以很容易地被替换为:
Observable.just(1, 2, 3)
.flatMap(i -> perform(i))
.subscribe();
Reactivex.io 文档: http : //reactivex.io/documentation/operators/flatmap.html