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