Rxjava操作符

                                        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 大佬的文章,下面是各个对应的链接:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值