1、作用
- 对事件序列中的事件 / 整个事件序列 进行加工处理(即变换),使得其转变成不同的事件 / 整个事件序列
2、类型
3、详解
3.1 map()----- 见rxdocs.pdf第80页
作用:对 被观察者发送的每1个事件都通过 指定的函数 处理,从而变换成另外一种事件
public static void map() { Observable.just("I", "am", "RxJava") .map(new Function<String, Integer>() { @Override public Integer apply(String s) throws Exception { return s.length(); } }).subscribe(new Observer<Integer>() { @Override public void onSubscribe(Disposable d) { Log.d(TAG, "onSubscribe"); } @Override public void onNext(Integer value) { Log.d(TAG, "onNext: value = " + value); } @Override public void onError(Throwable e) { Log.d(TAG, "onError: " + e.toString()); } @Override public void onComplete() { Log.d(TAG, "onComplete"); } }); }
输出:
08-06 14:55:52.715 18643 18643 D Operation: onSubscribe
08-06 14:55:52.716 18643 18643 D Operation: onNext: value = 1
08-06 14:55:52.716 18643 18643 D Operation: onNext: value = 2
08-06 14:55:52.716 18643 18643 D Operation: onNext: value = 6
08-06 14:55:52.716 18643 18643 D Operation: onComplete
3.2 flatMap()----- 见rxdocs.pdf第72页
作用:将被观察者发送的每个事件序列进行 拆分 & 单独转换,再合并成一个新的事件序列,最后再进行发送
原理:
- 为事件序列中每个事件都创建一个
Observable
对象; - 将对每个 原始事件 转换后的 新事件 都放入到对应
Observable
对象; - 将新建的每个
Observable
都合并到一个 新建的、总的Observable
对象; - 新建的、总的
Observable
对象 将 新合并的事件序列 发送给观察者(Observer
)