RxJava基本操作符(创建)
其实现在很多人写代码看框架最痛苦的就是英文文档看不懂,感谢大神分享的文档,开源万岁。
以下是RxJava中文文档,大家可以看着文档学习,还是比较靠谱的。我准备按照文档的划分,把常用的操作符都写一遍,当然有些我也没理解怎么用, 同志们知道的请留言 ,蟹蟹
中文文档
-
https://mcxiaoke.gitbooks.io/rxdocs/content/
先看文档进行基础讲解,
Rx系列其实就是经典的观察者模式,但是比观察者模式多了onCompleted, onError方法,采用组合的模式,避免了来回嵌套,死在回调的悲惨。
观察者模式可以说基本分解下来就四大条件 - 观察者(Observer)
- 被观察者(Observable)
- 订阅(subscribe)
- 驱动事件
这是我写的观察者模式的一些东西,需要的可以看一下
https://www.jianshu.com/p/39aed83cf0ef
我们先讲一下如何对RxJava进行创建
创建方式
just
将一个或多个对象转换成发射这个或这些对象的一个Observable
from 遇到只包含一个数据的时候,会使用just创建Observable
just 遇到多于一个的情况,会使用from 创建 Observable
from
将一个Iterable, 一个Future, 或者一个数组转换成一个Observable
我们看出from有很多参数,比如可以迭代的,从数组,甚至还可以从Future线程里,多长时间等,我们一般常用从集合或者数组
从集合
从数组
repeat
创建一个重复发射指定数据或数据序列的Observable
这个准确来说可以理解为将之前的数据再发射几次
默认是1次,可以选填几次
repeatWhen(未完成)
创建一个重复发射指定数据或数据序列的Observable,它依赖于另一个Observable发射的数据
其实这个不是很好理解,但是可以理解为再符合某个条件的时候,我们会再次repeat就可以了,
它的返回类型要求是 Observable。
create()
使用一个函数从头创建一个Observable
这个还是比较简单的
defer
只有当订阅者订阅才创建Observable;为每个订阅创建一个新的Observable
这个还是比较有用的,比如你用just,当你just运行的时候,数据立即发送,即便你没有subscribe,这个会等你绑定以后才会创建Observable,挨个发送数据,所以返回值是Observable;
range
创建一个发射指定范围的整数序列的Observable
这个就是发送一个从x起一共多少个数字的api,比如我的例子就是从6开始,10个数字,就到了15
interval
创建一个按固定时间间隔发射整数序列的Observable
每隔多久,发送一个数字,从0开始,不会停止
timer
创建一个在给定的延时之后发射单个数据的Observable
理解为绑定后,延迟多久发送然后结束
Empty
创建一个不发射任何数据但是正常终止的Observable
说白了就是发射就结束了
Never
创建一个不发射数据也不终止的Observable
绑定后就没下文了
Throw
创建一个不发射数据以一个错误终止的Observable