RxJava的flatmap

转载请标明出处:http://77blogs.com/?p=183

对 Observable 发射的数据都应用(apply)一个函数,这个函数返回一个 Observable,然后合并这些 Observables,并且发送(emit)合并的结果。

flatMap() 的原理是这样的
1. 使用传入的事件对象创建一个 Observable 对象
2. 并不发送这个 Observable, 而是将它激活,于是它开始发送事件;
3. 每一个创建出来的 Observable 发送的事件,都被汇入同一个 Observable ,而这个 Observable 负责将这些事件统一交给 Subscriber 的回调方法。这三个步骤,把事件拆成了两级,通过一组新创建的 Observable 将初始的对象『铺平』之后通过统一路径分发了下去。而这个『铺平』就是 flatMap() 所谓的 flat。

flatMap 和 map 操作符很相像,flatMap 发送的是合并后的 Observables,map 操作符发送的是应用函数后返回的结果集。

createObservable方法如下:

打印结果为:

01-02 16:52:36.969 30827-30827/com.status.rxjavasample D/RxJavaHelper: 1
01-02 16:52:36.969 30827-30827/com.status.rxjavasample D/RxJavaHelper: 2
01-02 16:52:36.969 30827-30827/com.status.rxjavasample D/RxJavaHelper: 3