RxJava操作符的介绍
创建操作(用于创建Observable的操作符)
Create
通过调用观察者的方法重新创建一个Observable
Defer
在观察者订阅之前不创建这个Observable,为每一个观察者创建一个新的Observable
Empty/Never/Throw
创建行为受限的特殊Observable
From
将其它的对象或数据结构转换为Observable
Interval
创建一个定时发射整数序列的Observable
Just
将对象或对象集合转换为一个会发射这些对象的Observable
Range
创建发射指定范围的整数序列的Observable
Repeat
创建重复发射特定的数据或数据序列的Observable
Start
创建发射一个函数的返回值的Observable
Timer
创建一个指定的延迟之后发射某个数据的Observable
变换操作(可用于对Observable发射的数据进行变换)
Buffer
缓存,可以简单的理解为缓存,它定期从Observable收集数据到一个集合,然后把这些数据集合打包发射,而不是一次发射一个
FlatMap
扁平映射,将Observable发射的数据变换Observables集合,然后将这些Observable发射的数据平坦化的放进一个单独的Observable,可以认为是一个将嵌套的数据结构展开的过程。(FlatMap把一个发送事件的上游Ovserable变换为多个发送事件的Observables,再把它们发射的事件合并后放进一个单独的Observable里,这个不保证变换后事件的顺序,若要有顺序要用concatMap)
GroupBy
分组,将原来的Observable分拆为Observable集合,将原始Observable发射的数据按Key分组,每一个Observable发射一组不同的数据
Map
映射,通过对序列的每一项每一项都应用一个函数变换Observable发射的数据,实质是对序列中的每一项执行一个函数,函数的参数就是这个数据项
Scan
扫描,对Observable的每一项数据应用一个函数,然后按顺序依次发射这些值
Window
窗口,定期将来自Observable的数据分拆成一些Observable窗口,然后发射这些窗口而不是每次发射一项。类似于Buffer,但Buffer发射的数据,WIndow发射的是Observable,每一个Observable发射原始Observable的数据的一个子集
过滤操作
(用于从Observable发射的数据中进行选择)
Debounce
只有在空闲了一段时间后才发射数据,通俗的说就是如果一段时间没有操作,就执行一次操作
Distinct
去重,过掉掉重复数据项
ElementAt
取值,取特定位置的数据项
Filter
过滤,过滤掉没有通过谓词测试的数据项,只发射通过测试的
First
首项,只发射满足条件的第一条数据
IgnoreElements
忽略所有的数据,只保留终止通知(onError或onCompleted)
Last
末项,只发射最后一条数据
Sample
取样,定期发射最新的数据,等于是数据抽样,有的实现里叫ThrottleFirst
Skip
跳过前面若干项数据
SkipLast
跳过后面的若干项数据
Take
只保留前面的若干项数据
TakeLast
只保留后面的若干项数据
结合操作(用于将多个Observable组合成一个单一的Observable)
And/Then/When
通过模式(And条件)和计划(Then次序)组合两个或多个Observable发射的数据集
CombineLatest
当两个Observables中的任何一个发射了一个数据时,通过一个指定的函数组合每个Observable发射的最新数据(一共两个数据),然后发射这个函数的结果
Join
无论何时,如果一个Observable发射了一个数据项,只要在另一个Observable发射的数据项定义的时间窗口内,就讲两个Observable发射的数据合并发射
Merge
将两个Observable发射的数据组合并成一个
StartWith
在发射原来的Observable的数据序列之前,先发射一个指定的数据序列或数据项
Switch
讲一个发射Observable序列的Observable转换为这样一个Observable:它逐个发射那些Observable最近发射的数据
Zip
打包,使用一个指定的函数将多个Observable发射的数据组合在一起,然后将这个函数的结果作为单项数据发射