RxJava系列4:RxJava操作符-变换操作符

xiaoxiao2021-02-28  40

对事件序列中的事件 / 整个事件序列 进行加工处理(即变换),使得其转变成不同的事件 / 整个事件序列

map

对 被观察者发送的每1个事件都通过 指定的函数 处理,从而变换成另外一种事件 即, 将被观察者发送的事件转换为任意的类型事件。

应用场景 数据类型转换

栗子:

Observable.create(new Observable.OnSubscribe<Integer>() { @Override public void call(Subscriber<? super Integer> subscriber) { subscriber.onNext(1); subscriber.onNext(2); subscriber.onNext(3); } }).map(new Func1<Integer, String>() { @Override public String call(Integer integer) { return "使用 Map变换操作符 将事件" + integer + "的参数从 整型" + integer + " 变换成 字符串类型" + integer; } }).subscribe(new Observer<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.d(":..nht", s); } }); 12-20 10:26:59.652 11717-11717/com.sankuai.moviepro D/:..nht: 使用 Map变换操作符 将事件1的参数从 整型1 变换成 字符串类型1 12-20 10:26:59.652 11717-11717/com.sankuai.moviepro D/:..nht: 使用 Map变换操作符 将事件2的参数从 整型2 变换成 字符串类型2 12-20 10:26:59.652 11717-11717/com.sankuai.moviepro D/:..nht: 使用 Map变换操作符 将事件3的参数从 整型3 变换成 字符串类型3

flatmap

作用:将被观察者发送的事件序列进行 拆分 & 单独转换,再合并成一个新的事件序列,最后再进行发送

应用场景 无序的将被观察者发送的整个事件序列进行变换

???跟map有啥区别?? 话说还是不太理解 http://www.jianshu.com/p/c820afafd94b RxJava 中的map与flatMap http://blog.csdn.net/new_abc/article/details/48025513

concatmap

flatmap理解了,concatmap就好说了。

buffer

定期从 被观察者(Obervable)需要发送的事件中 获取一定数量的事件 & 放到缓存区中,最终发送

应用场景 缓存被观察者发送的事件

栗子:

Observable.just(1,2,3,4) .buffer(3, 1) .subscribe(new Observer<List<Integer>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(List<Integer> integers) { for (int i = 0; i < integers.size(); i++) { Log.d(":..nht", integers.get(i) + ""); } } }); 12-20 20:20:51.054 6491-6491/com.sankuai.moviepro D/:..nht: 1 12-20 20:20:51.054 6491-6491/com.sankuai.moviepro D/:..nht: 2 12-20 20:20:51.054 6491-6491/com.sankuai.moviepro D/:..nht: 3 12-20 20:20:51.054 6491-6491/com.sankuai.moviepro D/:..nht: 2 12-20 20:20:51.054 6491-6491/com.sankuai.moviepro D/:..nht: 3 12-20 20:20:51.054 6491-6491/com.sankuai.moviepro D/:..nht: 4 12-20 20:20:51.054 6491-6491/com.sankuai.moviepro D/:..nht: 3 12-20 20:20:51.054 6491-6491/com.sankuai.moviepro D/:..nht: 4 12-20 20:20:51.054 6491-6491/com.sankuai.moviepro D/:..nht: 4

理解可参考图示:

参考资料

Android RxJava:图文详解 变换操作符 https://www.jianshu.com/p/904c14d253ba

转载请注明原文地址: https://www.6miu.com/read-2150283.html

最新回复(0)