小白学习Rxjava2,从零开始到实战(三) 操作符
来源:互联网 发布:知满天和中公哪个好 编辑:程序博客网 时间:2024/06/06 03:48
前言
在我看来,操作符的作用就是优雅简洁的替代一部分代码。
举个栗子:
现在有这么一个情况:需要实现一个注册登录的流程,如果不用操作符,代码可能是这样的:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
虽然能够实现要求,不过有没有符合RxJava简洁特点的实现方式呢?
因此,操作符应运而生。
正文
全部的操作符可以查看官方文档:http://reactivex.io/documentation/operators.html,这里只是举几个例子:
1. 几个常见的操作符
map
作用:用来把一个事件转换为另一个事件。例如:登陆操作,将数字密码转换为String,并进行加密操作等。
flatmap
作用:转换Observable 为多个Observable与map的区别:
map操作的是一个Observable ,最后更改了这个Observable 的数据类型,而flatMap则是将传过来的数据进行处理,转换为多个Observable,然后发送出去。也就是说flatmap改变了这个Observable ,重新开了一个Observable 。concatMap
作用:与flatmap相似区别:
与flatmap相比,concatMap返回的数据是有序的,而flatmap是无序的。From
作用:from()接收一个集合作为输入,然后每次输出一个元素给subscriber.举个例子:
List s = Arrays.asList(“Java”, “Android”, “Ruby”, “iOS”, “Swift”);
Observable.from(s).subscribe(new Action1() {
@Override
public void call(String s) {
System.out.println(s);
}
});输出结果:
Java
android
Ruby
ios
swift
2. 使用示例:
以上面的例子为例:
1.map
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
结果:
- 1
- 1
2.flatmap
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
结果:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
3.concatMap
与上例相比,结果变为有序输出:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
总结
操作符的运用还是要看下官方那块怎么写的,找几个例子试一下就明白了。下一篇准备进入实战……顺便开始分析记录我的第一个个人APP的开发过程,感觉单纯讲代码还是没什么意思。RxJava2的最基本用法现在也差不多了,注意点还是在背压那块,不过背压问题也不是经常发生,后面有机会顺便研究下。
- 小白学习Rxjava2,从零开始到实战(三) 操作符
- 小白学习Rxjava2,从零开始到实战(三) 操作符
- 小白学习Rxjava2,从零开始到实战(一) RxJava2的基础使用
- 小白学习Rxjava2,从零开始到实战(二) 线程控制
- Rxjava2-小白入门(三)
- rxjava2代码实战1--Map操作符
- rxjava2代码实战2--zip操作符
- 从零开始的RxJava2.0教程(二)操作符
- 从零开始的RxJava2.0教程(二)操作符
- 从零开始的RxJava2.0教程(二)操作符
- 从零开始的RxJava2.0教程(二)操作符
- RxJava2 / RxJava2操作符scan
- rxjava2代码实战3--flatMap,concatMap操作符
- RxJava2.0中fromArray操作符用法和源码分析(三)
- Rxjava2.x学习记录(三)
- RxJava2详解(二)--操作符
- rxjava2操作符
- RxJava2操作符Map
- 大一下学习反思与计划
- 三维重建面试12:室内三维物体的位姿识别论文列表
- 百度定位集成
- Java精选笔记_集合【Set(集合)接口】
- 5、6月份月报总结
- 小白学习Rxjava2,从零开始到实战(三) 操作符
- 菜单的使用Menu
- 三维重建面试13:点云的局部特征总结
- DOS黑窗口下安装Django和写一个小项目
- LSB算法的实现(带简单界面)
- node express 配置路由返回html文件
- android微信sqlite数据库密码简单获得获得
- 【Docker安装】- Ubuntu14.04安装最新版Docker-1.9.1
- 360脱壳-native函数还原笔记-2017-06-25