RxJava学习:功能性操作符

Function Operator

功能

订阅

subscribe()

即使得被观察者 & 观察者 形成订阅关系

延迟

delay()

使得被观察者延迟一段时间再发送事件

在生命周期内操作

doOnEach()

当observable每发送一次数据事件就会调用一次

doOnNext()

执行Next事件之前调用

doOnCompleted()

observable正常发送事件完毕后调用

doAfterNext()

执行Next事件之后调用

doOnError()

observable发送错误事件时调用

doOnSubscribe()

观察者订阅时调用

doOnTerminate()

observable发送事件完毕后调用,无论正常发送完毕/异常终止

doOnUnsubscribe()

观察者取消订阅时调用

doOnFinally()

最后执行

线程调度(被观察者 (Observable) / 观察者(Observer)的工作线程 = 创建自身的线程)

subscribeOn()

指定被观察者的工作线程,在该线程上生产事件。传入RxJava的内置线程类型。

observeOn()

指定观察者接收和响应事件的线程。

内置线程类型

Schedulers.immediate()

当前所在线程,默认。

AndroidSchedulers.mainThread()

Android主线程,操作UI。不应该在UI线程做耗时操作。ANR。

Schedulers.newThread()

常规新线程。耗时等操作

Schedulers.io()

IO操作线程。网络请求、读写文件等io密集型操作。网络请求也是IO线程,本质是套接字通信。

Schedulers.computation()

CPU计算操作线程,大量计算操作。

错误处理。发送事件过程中,遇到错误时的处理机制

onErrorReturn

遇到错误时,发送1个特殊事件 & 正常终止。可捕获在它之前发生的异常

onErrorResumeNext()

遇到错误时,发送1个新的Observable。

onErrorResumeNext()拦截的错误 = Throwable

若需拦截Exception请用onExceptionResumeNext()

onErrorResumeNext()拦截的错误 = Exception,则会将错误传递给观察者的onError方法。

onExceptionResumeNext()

遇到错误时,发送1个新的Observable。

retry()

重试,即当出现错误时,让被观察者(Observable)重新发射数据。接收到 onError()时,重新订阅 & 发送事件

Throwable 和 Exception都可拦截。

重复发送。

重复不断地发送被观察者事件

repeat()

无条件地、重复发送 被观察者事件。具备重载方法,可设置重复创建次数

repeatWhen()

有条件地、重复发送 被观察者事件。将原始 Observable 停止发送事件的标识(Complete() / Error())转换成1个 Object 类型数据传递给1个新被观察者(Observable),以此决定是否重新订阅 & 发送原来的 Observable。

若新被观察者(Observable)返回1个Complete / Error事件,则不重新订阅 & 发送原来的 Observable

若新被观察者(Observable)返回其余事件时,则重新订阅 & 发送原来的 Observable

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值