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