(三)关于RxJava详解:操做符

一 建立操做html

用于建立Observable的操做符react

  • Create — 经过调用观察者的方法从头建立一个Observable数组

  • Defer — 在观察者订阅以前不建立这个Observable,为每个观察者建立一个新的Observable缓存

  • Empty/Never/Throw — 建立行为受限的特殊Observable数据结构

  • From — 将其它的对象或数据结构转换为Observable并发

  • Interval — 建立一个定时发射整数序列的Observable函数

  • Just — 将对象或者对象集合转换为一个会发射这些对象的Observable测试

  • Range — 建立发射指定范围的整数序列的Observablespa

  • Repeat — 建立重复发射特定的数据或数据序列的Observable线程

  • Start — 建立发射一个函数的返回值的Observable

  • Timer — 建立在一个指定的延迟以后发射单个数据的Observable

二 变换操做

这些操做符可用于对Observable发射的数据进行变换,详细解释能够看每一个操做符的文档

  • Buffer — 缓存,能够简单的理解为缓存,它按期从Observable收集数据到一个集合,而后把这些数据集合打包发射,而不是一次发射一个

  • FlatMap — 扁平映射,将Observable发射的数据变换为Observables集合,而后将这些Observable发射的数据平坦化的放进一个单独的Observable,能够认为是一个将嵌套的数据结构展开的过程。

  • GroupBy — 分组,将原来的Observable分拆为Observable集合,将原始Observable发射的数据按Key分组,每个Observable发射一组不一样的数据

  • Map — 映射,经过对序列的每一项都应用一个函数变换Observable发射的数据,实质是对序列中的每一项执行一个函数,函数的参数就是这个数据项

  • Scan — 扫描,对Observable发射的每一项数据应用一个函数,而后按顺序依次发射这些值

  • Window — 窗口,按期未来自Observable的数据分拆成一些Observable窗口,而后发射这些窗口,而不是每次发射一项。相似于Buffer,但Buffer发射的是数据,Window发射的是Observable,每个Observable发射原始Observable的数据的一个子集

三 过滤操做

这些操做符用于从Observable发射的数据中进行选择

  • Debounce — 只有在空闲了一段时间后才发射数据,通俗的说,就是若是一段时间没有操做,就执行一次操做

  • Distinct — 去重,过滤掉重复数据项

  • ElementAt — 取值,取特定位置的数据项

  • Filter — 过滤,过滤掉没有经过谓词测试的数据项,只发射经过测试的

  • First — 首项,只发射知足条件的第一条数据

  • IgnoreElements — 忽略全部的数据,只保留终止通知(onError或onCompleted)

  • Last — 末项,只发射最后一条数据

  • Sample — 取样,按期发射最新的数据,等因而数据抽样,有的实现里叫ThrottleFirst

  • Skip — 跳过前面的若干项数据

  • SkipLast — 跳事后面的若干项数据

  • Take — 只保留前面的若干项数据

  • TakeLast — 只保留后面的若干项数据

四 组合操做

组合操做符用于将多个Observable组合成一个单一的Observable

  • And/Then/When — 经过模式(And条件)和计划(Then次序)组合两个或多个Observable发射的数据集

  • CombineLatest — 当两个Observables中的任何一个发射了一个数据时,经过一个指定的函数组合每一个Observable发射的最新数据(一共两个数据),而后发射这个函数的结果

  • Join — 不管什么时候,若是一个Observable发射了一个数据项,只要在另外一个Observable发射的数据项定义的时间窗口内,就将两个Observable发射的数据合并发射

  • Merge — 将两个Observable发射的数据组合并成一个

  • StartWith — 在发射原来的Observable的数据序列以前,先发射一个指定的数据序列或数据项

  • Switch — 将一个发射Observable序列的Observable转换为这样一个Observable:它逐个发射那些Observable最近发射的数据

  • Zip — 打包,使用一个指定的函数将多个Observable发射的数据组合在一块儿,而后将这个函数的结果做为单项数据发射

五 错误处理

这些操做符用于从错误通知中恢复

  • Catch — 捕获,继续序列操做,将错误替换为正常的数据,从onError通知中恢复

  • Retry — 重试,若是Observable发射了一个错误通知,从新订阅它,期待它正常终止

六 辅助操做

一组用于处理Observable的操做符

  • Delay — 延迟一段时间发射结果数据

  • Do — 注册一个动做占用一些Observable的生命周期事件,至关于Mock某个操做

  • Materialize/Dematerialize — 将发射的数据和通知都当作数据发射,或者反过来

  • ObserveOn — 指定观察者观察Observable的调度程序(工做线程)

  • Serialize — 强制Observable按次序发射数据而且功能是有效的

  • Subscribe — 收到Observable发射的数据和通知后执行的操做

  • SubscribeOn — 指定Observable应该在哪一个调度程序上执行

  • TimeInterval — 将一个Observable转换为发射两个数据之间所耗费时间的Observable

  • Timeout — 添加超时机制,若是过了指定的一段时间没有发射数据,就发射一个错误通知

  • Timestamp — 给Observable发射的每一个数据项添加一个时间戳

  • Using — 建立一个只在Observable的生命周期内存在的一次性资源

七 条件和布尔操做

这些操做符可用于单个或多个数据项,也可用于Observable

  • All — 判断Observable发射的全部的数据项是否都知足某个条件

  • Amb — 给定多个Observable,只让第一个发射数据的Observable发射所有数据

  • Contains — 判断Observable是否会发射一个指定的数据项

  • DefaultIfEmpty — 发射来自原始Observable的数据,若是原始Observable没有发射数据,就发射一个默认数据

  • SequenceEqual — 判断两个Observable是否按相同的数据序列

  • SkipUntil — 丢弃原始Observable发射的数据,直到第二个Observable发射了一个数据,而后发射原始Observable的剩余数据

  • SkipWhile — 丢弃原始Observable发射的数据,直到一个特定的条件为假,而后发射原始Observable剩余的数据

  • TakeUntil — 发射来自原始Observable的数据,直到第二个Observable发射了一个数据或一个通知

  • TakeWhile — 发射原始Observable的数据,直到一个特定的条件为真,而后跳过剩余的数据

八 算术和聚合操做

这些操做符可用于整个数据序列

  • Average — 计算Observable发射的数据序列的平均值,而后发射这个结果

  • Concat — 不交错的链接多个Observable的数据

  • Count — 计算Observable发射的数据个数,而后发射这个结果

  • Max — 计算并发射数据序列的最大值

  • Min — 计算并发射数据序列的最小值

  • Reduce — 按顺序对数据序列的每个应用某个函数,而后返回这个值

  • Sum — 计算并发射数据序列的和

九 链接操做

一些有精确可控的订阅行为的特殊Observable

  • Connect — 指示一个可链接的Observable开始发射数据给订阅者

  • Publish — 将一个普通的Observable转换为可链接的

  • RefCount — 使一个可链接的Observable表现得像一个普通的Observable

  • Replay — 确保全部的观察者收到一样的数据序列,即便他们在Observable开始发射数据以后才订

十 转换操做

  • To — 将Observable转换为其它的对象或数据结构

  • Blocking 阻塞Observable的操做符

几种主要的需求

  • 直接建立一个Observable(建立操做)

  • 组合多个Observable(组合操做)

  • 对Observable发射的数据执行变换操做(变换操做)

  • 从Observable发射的数据中取特定的值(过滤操做)

  • 转发Observable的部分值(条件/布尔/过滤操做)

  • 对Observable发射的数据序列求值(算术/聚合操做)


(来自于:http://reactivex.io/documentation/operators.html#categorized )

相关文章
相关标签/搜索