本人记录使用
若详细学习,可点击:https://www.jianshu.com/p/e9c79eacc8e3
Create(创建)
create 操作符应该是最常见的操作符了,主要用于产生一个 Obserable 被观察者对象,为了方便大家的认知,以后的教程中统一把被观察者 Observable 称为发射器(上游事件),观察者 Observer 称为接收器(下游事件)。
Map(转换)
Map
基本算是 RxJava 中一个最简单的操作符了,熟悉 RxJava 1.x 的知道,它的作用是对发射时间发送的每一个事件应用一个函数,是的每一个事件都按照指定的函数去变化,而在 2.x 中它的作用几乎一致。
Zip(事件合并)
zip
专用于合并事件,该合并不是连接(连接操作符后面会说),而是两两配对,也就意味着,最终配对出的 Observable
发射事件数目只和少的那个相同。
Concat(数据源合并)
对于单一的把两个发射器连接成一个发射器,虽然 zip
不能完成,但我们还是可以自力更生,官方提供的 concat
让我们的问题得到了完美解决。
FlatMap(数据源转换)
FlatMap
是一个很有趣的东西,我坚信你在实际开发中会经常用到。它可以把一个发射器 Observable
通过某种方法转换为多个 Observables
,然后再把这些分散的 Observables
装进一个单一的发射器 Observable
。但有个需要注意的是,flatMap
并不能保证事件的顺序,如果需要保证,需要用到我们下面要讲的 ConcatMap
。
concatMap(数据源转换 有序)
上面其实就说了,concatMap
与 FlatMap
的唯一区别就是 concatMap
保证了顺序,所以,我们就直接把 flatMap
替换为 concatMap
验证吧。
distinct(去重)
这个操作符非常的简单、通俗、易懂,就是简单的去重嘛,我甚至都不想贴代码,但人嘛,总得持之以恒。
Filter(条件过滤)
信我,Filter
你会很常用的,它的作用也很简单,过滤器嘛。可以接受一个参数,让其过滤掉不符合我们条件的值
buffer(位移)
buffer
操作符接受两个参数,buffer(count,skip)
,作用是将 Observable
中的数据按 skip
(步长) 分成最大不超过 count 的 buffer
,然后生成一个 Observable
。也许你还不太理解,我们可以通过我们的示例图和示例代码来进一步深化它。
debounce(频率)
去除发送频率过快的项,看起来好像没啥用处,但你信我,后面绝对有地方很有用武之地。
reduce
reduce
操作符每次用一个方法处理一个值,可以有一个 seed
作为初始值。
defer
简单地时候就是每次订阅都会创建一个新的 Observable
,并且如果没有被订阅,就不会产生新的 Observable
。
last
last
操作符仅取出可观察到的最后一个值,或者是满足某些条件的最后一项。
merge
merge
顾名思义,熟悉版本控制工具的你一定不会不知道 merge 命令,而在 Rx 操作符中,merge
的作用是把多个 Observable
结合起来,接受可变参数,也支持迭代器集合。注意它和 concat
的区别在于,不用等到 发射器 A 发送完所有的事件再进行发射器 B 的发送。