RxJava2.x 五种观察者和操作符简介

RxJava 提供了一系列操作符,可以使用它们来过滤(Filter)、选择(select)、变换(transform)、结合(combine)和组合(compose)多个 Observable,这些操作符让执行和复合变得非常高效!

RxJava 使用 3 步走:

  1. 创建 Observable;
  2. 创建 Observer;
  3. 使用 subscribe 进行订阅;

因此,这三者缺一不可,只有使用了 subscribe 被观察者才会开始发送数据。

1.五种观察者模式描述表

类型 描述
Observable 能够发射 0或 n 个数据,并以成功或错误事件终止
Flowable 能够发射 0或 n 个数据,并以成功或错误事件终止,支持背压,可以控制数据源发射的速度
Single 只发射单个数据或错误事件
Completable 从来不发射数据,只处理 onComplete 和 onError 事件,可以看成 Rx 的Runnable
Maybe 能够发射 0 或 1个数据,要么成功,要么失败,有点类似于 Optional

2.do 操作符的用途

操作符 用途
doOnSubscribe 一旦观察者订阅了 Observable,他就会被调用
doOnLifecycle 可以在观察者订阅之后,设置是否取消订阅
doOnNext 它产生的 Observable 每发射一项数据就会调用它一次,它的 Consumer 接受发射的数据项,一般用于在 subscribe 之前对数据进行处理
doOnEach 它产生的 Observable 每发射一项数据就会调用它一次,不仅包括 onNext,还有 onError 和 onCompleted
doAfterNext 在 onNext 之后执行,而 doOnNext 是在 onNext 之前执行
doOnComplete 当它产生的 Observable 在正常终止调用 onComplete 时会被调用
doFinally 当它产生的 Observable 终止之后被调用,无论是正常终止还是异常终止。doFinally 优先于 doAfterTerminate 的调用
doAfterTerminate 注册一个 Action,当 onComplete 或 onError 时触发

1.Map

Map 操作符的作用就是将 Observable 所发送送的信息进行格式转换或者处理转变为另外一个类型,然后发送给下游的 Observer

2.fromArray

传入一个数组或集合参数,将参数注入到 Flowable 中,仅此而已。

3.Filter

Filter 顾名思义,过滤器,可以过滤掉一部分不符合要求的事件,当上游给我们发送的数据超多,而下游需要的只是一些特定的数据,如果全部接收上游发送的数据,很容易造成 OOM, 为了避免 OOM 的出现。

4.just

just 是 RxJava 的创建操作符,用于创建一个 Observable,Consumer 是消费者,用于接收单个值。

5.do

do 操作符可以给 Observable 的生命周期的各个阶段加上一系列的回调监听,当执行到这一阶段时,回调就会被触发。

发布了138 篇原创文章 · 获赞 168 · 访问量 46万+

猜你喜欢

转载自blog.csdn.net/xinpengfei521/article/details/102628003
今日推荐