Observable :被观察者
Observer:观察者
操作符
Create 创建被观察者(Observable)对象,Observable称为发射器(上游事件),Observer接收器(下游事件)
Disposable 用于切断上下游事件(也就是观察者和被观察者事件),但是,当上下游事件被切断的时候,下游(接收器)不再接收事件,但是,上游(发射器)还会继续发送未完成的事件。
Map 转换函数关系
Zip用于合并事件,发送多个事件,以事件比较少的那个为主,两两对应结合起来。
Concat将两个发射器(被观察者)结合起来,顺序接收
FlatMap将一个发射器(Observable)通过某种方法转换为多个发射器(Observables),但是,事件执行的顺序不能保证,也就是说执行顺序是无序的。
ConcatMap 将一个发射器(Observable)通过某种方法转换为多个发射器(Observables),但是,事件是按照一定顺序执行的,也就是说执行顺序是有序的。
distinct 去除重复数据或操作
Filter 过滤器,可以接受一个参数,让其过滤掉符合我们的值。
buffer
buffer
操作符接受两个参数,buffer(count,skip)
,作用是将Observable
中的数据按skip
(步长) 分成最大不超过 count 的buffer
,然后生成一个Observable
。其中count代表最大取值,在事件足够的时候,一般都是取count
个值,skip是间隔。
timer延时多久执行事件,接收两个参数timer(long delay, TimeUnit unit),delay是事件间隔,unit是时间单位
interval 用于间隔时间执行某个操作,其中有三个参数interval(long initialDelay, long period, TimeUnit unit)分别是第一次发送延迟时间,间隔时间,时间单位。当然,也有两个参数,具体可以看源码。注意:由于这个是间隔执行,所以当我们的activity或者fragment销毁的时候,这个操作可能依然在执行,所以需要在不需要的时候销毁了。这里就需要Disposable了,当我们的activity或者fragment销毁的时候(onDestroy)中直接执行dispose()方法。
doOnNext :用于让订阅者在接收到数据之前做一点其他操作。
skip:跳过count个数目开始接收。skip(count),count代表跳过的个数
take:接受一个long型参数count,代表至多接收count个数据。
just:发射器(被观察者)依次调用onNext()方法
Single:只会接收一个参数,SingleObserver只会调用onError()或者onSuccess()。
dobounce:去除发送频率过快的项,debounce(long timeout, TimeUnit unit)
第一个参数是时间,第二个参数是时间单位。也就是说去除时间小于指定时间的事件。
defer:每次订阅都会创建一个新的被观察者(Observable),如果没有订阅,就不会创建新的observable。
last:操作符仅取出可观察的最后一个值,或者是满足某些条件的最后一项。
merge:把多个Observable结合起来,接受可变参数,也支持迭代器集合。和concat的区别在于不用等到发射器A发送完所有的事件再进行发射器B的发送。
reduce:每次用一个方法处理一个值,可以有一个seed作为初始值。reduce((x,y)—>x+y),并且不输出每一个步骤只输出结果。
scan:每次调用一个方法处理一个值,和reduce和相似,scan((x,y)—>x+y)但是,scan会将每一个步骤都输出。