每个特定语言版本的响应式扩展实现了一套具体的操作集合。虽然有一些重叠,依然有一些操作只在特定的版本中实现,并且每种语言趋向于将相似的操作命名成其他语言中已经为大家所熟悉的名称。
这篇文章列举出响应式扩展集合中被认为核心的操作,并链接到更多说明的页面上。这些页面将解释这些操作如何工作,哪些特定版本的响应式扩展又是怎样实现这些操作。
创建Observable
创建新的Observable的Operator。
Create
- 通过编程方式调用observer的方法,从零创建ObservableDefer
- 直到observer订阅,为每个observer创建全新的ObservableEmpty/Never/Throw
- 创建具有精确与有限行为的ObservableFrom
- 转化其他对象或者数据结构为ObservableInterval
- 创建产生整型数序列的Observable,序列元素间的间隔为intervalJust
- 转化对象或者对象的集合成为Observable,且Observable产生的值为这些对象或是对象的集合Range
- 创建一个可以产生整型数序列区间的ObservableRepeat
- 创建可以重复产生特殊项或项目序列的ObservableStart
- 创建产生函数返回值的ObservableTimer
- 创建一段给定时间以后产生单一项的Observable
变换Observable
变换Observable产生的项的Operator。
Buffer
- 周期性的收集Observable中的项放入bundle中,并产生这些bundle而不是一次性产生这些项FlatMap
- 将Observable所产生的多个项目变换为多个Observable,然后将这些Observable的产生值拉平为一个ObservableGroupBy
- 将Observable分隔为Observable的集合,这些新的Observable通过key来对原来的Observable组织成不同的项的组Map
- 将Observable产生的每个项应用函数变换映射Scan
- 对Observable产生的每个项进行函数变换,有序的产生成功的值Window
- 周期性的将Observable产生的项进行分隔成子集,放入Observable window,并产生这些window而不是一次性产生这些项
过滤Observable
选择性的从源Observable中产生项的Operator。
Debounce
- 在一段特定的时间之内从Observable中只产生一个项Distinct
- 过滤掉Observable中产生的重复的项ElementAt
- 从Observable中拿到第N个项Filter
- 从Observable中产生符合预设条件的项First
- 从Observable中产生第一个项或者产生符合条件的第一个项IgnoreElements
- 直到结束是通知,否则忽略Observable产生的所有项Last
- 产生Observable中的最后一项Sample
- 在特定的时间间隔内从Observable产生最近的项Skip
- 跳过Observable产生的前n个项SkipLast
- 跳过Observable产生的最后n个项Take
- 产生Observable产生的前n个项TakeLast
- 产生Observable产生的最后n个项
组合Observable
操作多个源Observable来创建新的Observable的Operator
And/Then/When
- 以Pattern
和Plan
的形式,组合两个或多个Observable产生的项集CombineLatest
- 不论两个Observable中产生了项,通过特定的函数来组合每个Observable中的最后一项,并产生他们的结果Join
-Merge
-StartWith
-Switch
-Zip
- 通过特定的函数将多个Observable的产生项组合成单一项,每个组合依赖于函数结果。
错误处理Operator
帮助从Observable错误通知中修复的Operator
Catch
- 通过没有错误的继续产生序列来从onError
通知中修复Retry
- 如果源Observable发送了onError
通知,重新订阅它并期待它可以没有错误的完成
Observable工具集Operator
一系列操作Observable的有用的工具箱Operator
Delay
- 将Observable产生项延迟一个特定的时间Do
- 注册一个动作来响应Observable的生命周期事件Materialize/Dematerialize
- 将产生的项或者发出的通知看成产生项,或者逆转这个过程ObserveOn
- 明确Observer观察Observable所在的SchedulerSubscribeOn
- 明确Observable被订阅后所使用的SchedulerTimeInterval
- 将产生项的Observable转化为这些项之间产生的时间间隔Timeout
- 镜像源Observable,并在特定的时间范围内没有项产生时发出错误通知Timestamp
- 给每个Observable产生项附加时间戳Using
- 创建一个与Observable具有相同寿命的一次性资源
条件和布尔Operator
评估一个或多个Observable或Observable产生的项
All
- 确定是否所有的Observable产生项符合标准Amb
- 有两个或者多个源Observable,只对其中的第一个Observable产生其项Contains
- 确定Observable是否包含一个特殊的项DefaultIfEmpty
- 从源Observable产生项,如果为空,则产生默认项SequenceEqual
- 确定是否两个Observable产生同样的项序列SkipUntil
- 丢弃一个Observable所有的产生项,直到第二个Observable产生了项SkipWhile
- 丢弃一个Observable所有产生项,直到某个特定条件不成立TakeUntil
- 当第二个Observable产生了项,第一个Observable丢弃所有的产生项TakeWhile
- 当某个特定条件不成立,Observable丢弃所有的产生项
数学与聚合Operator
操作Observable所有产生项的序列的Operator
Average
- 计算Observable所有产生项的平均值,并产生这个平均值Concat
- 拼接两个或者多个ObservableCount
- 计算源Observable产生的项的个数,并产生这个值Max
- 确定并产生Observable产生值中的最大值Min
- 确定并产生Observable产生值中的最小值Reduce
- 对Observable产生的每个项应用函数变换,并且有序的产生最终变换结果Sum
- 计算Observable所有产生项的和,并产生这个和的值
Connectable Observable Operator
特殊的Observable具有更多的动态的精确控制的订阅方式。
Connect
- 指示一个可连接的Observable开始产生项到它的订阅者Publish
- 转化一个普通的Observable为一个可连接的ObservableRefCount
- 使一个可链接的Observable的行为跟普通的Observable一样Replay
- 确保所有观察者看到的产生项序列一样,即使它们在Observable产生项以后才订阅
Blocking Observable Operator
To
- 将Observable转化为其他对象或者数据结构