您的位置:首页 > 编程语言 > Java开发

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

2017-12-20 21:52 501 查看
对事件序列中的事件 / 整个事件序列 进行加工处理(即变换),使得其转变成不同的事件 / 整个事件序列

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: