Rxjava操作符汇总
操作符类别 | 操作符名称 | 功能描述 | |
---|---|---|---|
创建操作符 | 基本创建 | create | 最基本的创建方式 |
快速创建 | just | 直接发送传入的值 | |
fromArray | 遍历发送传入的数组 | ||
fromlterable | 遍历发送传入的List集合 | ||
never | 不发送任何事件 | ||
empty | 仅发送Complete事件 | ||
error | 仅发送Error事件 | ||
延迟创建 | defer | 直到被订阅后才发送 | |
timer | 延迟指定时间后发送 | ||
interval | 每隔指定时间发送 | ||
intervalRange | 每隔指定时间发送指定数量 | ||
range rangeLong | 连续发送一个序列,可指定范围 序列可为Long类型 | ||
变换操作符 | 变换 | Map | 将被观察者发送的事件转换为任意类型事件发送 |
FlatMap | 无序将事件进行拆分-变换-合并-发送 | ||
ConcatMap | 有序将事件进行拆分-变换-合并-发送 | ||
Buffer | 从发送序列提取固定数量的事件进行发送,并设定下一次提取间隔的步长 | ||
组合操作符 | 组合被观察者 | concat concatArray | 组合多个被观察者后串行发送事件 concat可组合数量<=4 array> |
merge mergeArray | 组合多个被观察者后并行发送事件 merge可组合数量<=4 array>4 | ||
concatDelayError mergeDelayError | 当使用concat/merge操作符发送事件时,若其中一个观察者发出onError事件,则会立即终止其它被观察者的发送,这两个操作符可以推迟到其它观察者发送结束后再触发onError | ||
合并事件 | Zip | 对位合并多个被观察者,最终合并的事件数量等于多个被观察者中数量少的 | |
combineLatest combineLatestDelayError | 将最后一个被观察者的事件与之前发送的被观察者的最后一个事件进行合并,combineLatesDelayError与concat和merge类似 | ||
reduce | 将被观察者的数据聚合,最终聚合成1个数据发送(+-*/...) | ||
collect | 将被观察者的数据收集到1个结构/容器中,然后发送 | ||
追加事件 | startWith startWithArray | 发送事件前追加发送事件或被观察者 追加类型为Array | |
统计数量 | count | 统计最终发送事件的数量 | |
功能操作符 | 连接 | subscribe | 订阅、连接观察者&被观察者 |
线程调度 | subscribeOn | 指定被观察者生产事件的线程 | |
observeOn | 指定观察者接收&响应事件的线程 | ||
延迟操作 | delay | 使被观察者延迟一段时间再发送事件 | |
指定 生命周期 | do | 在某个时间的生命周期中调用 如:doOnEach、doOnNext、doOnError、doOnComplete等 | |
错误处理 | onErrorReturn | 捕获错误时,发送一个特殊事件,然后正常终止 | |
onErrorResumeNext | 捕获到Throwable时,发送1个新的被观察者,然后执行新的Observable,若捕获到Exception,则发送onError | ||
onExceptionResumeNext | 捕获到Exception时,发送1个新的被观察者,然后执行新的Observable,若捕获到 Throwable,则发送onError | ||
retry | 捕获错误时,重新订阅&发送事件,可指定重发次数,也可根据条件判断是否重发 | ||
retryUntil | 捕获错误时,根据条件判断是否重发 =retry(Predicate predicate) | ||
retryWhen | 捕获错误时,将错误传递给一个新的被观察者,从而决定是否重新订阅原始被观察者&发送事件 | ||
重复发送 | repeat | 无条件的重复发送被观察者事件 可指定重复创建次数 | |
repeatWhen | 有条件的重复发送被观察者事件 | ||
过滤操作符 | 条件过滤 | Filter | 过滤特定条件的事件 |
ofType | 过滤特定数据类型的事件 | ||
skip skipLast | 跳过几个事件 跳过最后几个事件 | ||
distinct distinctUntilChanged | 过滤序列中的重复事件 过滤序列中的连续重复事件 | ||
数量过滤 | take takeLast | 指定观察者最多能接收到的事件数量 指定观察者最多接收到被观察者发送的最后几个事件 | |
时间过滤 | throttleFirst throttleLast | 在某段时间内,只发送该段时间内的第1个事件 只发送该时间段内最后1个事件 | |
Sample | 与throttleLast类似 | ||
throttleWithTimeout debounce | 发送事件的间隔<指定时间,直接抛弃,超过指定时间才会发送 | ||
位置过滤 | firstElement | 仅发送第一个事件 | |
lastElement | 仅发送最后一个事件 | ||
elementAt | 发送指定索引值的事件,允许越界 | ||
elementAtOrError | 发送指定索引值的事件,越界发送onError事件 | ||
条件操作符 | 条件 | all | 发送的事件都满足设置条件时返回true,否则返回false |
contains | 发送的事件中是否存在设置的某个事件,存在返回true,否则返回false | ||
isEmpty | 判断发送的事件是否为空,为空返回true,否则返回false | ||
amb | 当存在多个被观察者时,只发送第一个被观察者的数据,其余丢弃 | ||
takeWhile | 当需要发送的事件全都满足设置条件时发送事件 | ||
takeUntil | 当执行到满足设置条件的事件时,停止发送剩余事件 | ||
skipWhile | 当发送的事件存在任意一个不满足设置的条件时,发送全部事件 | ||
skipUntil | 待skipUntil()传入的Observable开始发送事件,原始Observable才开始发送事件 | ||
defaultIfEmpty | 当发送的事件为空时,输出默认值 | ||
SequenceEqual | 判断需要发送的两个被观察者事件是否完全相同,相同返回true,否则返回false |
参考 Carson_Ho 大佬的文章,下面是各个对应的链接: