ReactiveX 之 Operator

阿里云产品限时红包,最高 ¥1888 元,立即领取

原文:http://reactivex.io/documentation/operators.html

对译文有建议,请发邮件或下方评论给我,万分感谢。

更新历史:1月13日

每个特定语言版本的响应式扩展实现了一套具体的操作集合。虽然有一些重叠,依然有一些操作只在特定的版本中实现,并且每种语言趋向于将相似的操作命名成其他语言中已经为大家所熟悉的名称。

这篇文章列举出响应式扩展集合中被认为核心的操作,并链接到更多说明的页面上。这些页面将解释这些操作如何工作,哪些特定版本的响应式扩展又是怎样实现这些操作。

创建Observable

创建新的ObservableOperator

  • Create - 通过编程方式调用observer的方法,从零创建Observable
  • Defer - 直到observer订阅,为每个observer创建全新的Observable
  • Empty/Never/Throw - 创建具有精确与有限行为的Observable
  • From - 转化其他对象或者数据结构为Observable
  • Interval - 创建产生整型数序列的Observable,序列元素间的间隔为interval
  • Just - 转化对象或者对象的集合成为Observable,且Observable产生的值为这些对象或是对象的集合
  • Range - 创建一个可以产生整型数序列区间的Observable
  • Repeat - 创建可以重复产生特殊项或项目序列的Observable
  • Start - 创建产生函数返回值的Observable
  • Timer - 创建一段给定时间以后产生单一项的Observable

变换Observable

变换Observable产生的项的Operator

  • Buffer - 周期性的收集Observable中的项放入bundle中,并产生这些bundle而不是一次性产生这些项
  • FlatMap - 将Observable所产生的多个项目变换为多个Observable,然后将这些Observable的产生值拉平为一个Observable
  • GroupBy - 将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来创建新的ObservableOperator

  • And/Then/When - 以PatternPlan的形式,组合两个或多个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所在的Scheduler
  • SubscribeOn - 明确Observable被订阅后所使用的Scheduler
  • TimeInterval - 将产生项的Observable转化为这些项之间产生的时间间隔
  • Timeout - 镜像源Observable,并在特定的时间范围内没有项产生时发出错误通知
  • Timestamp - 给每个Observable产生项附加时间戳
  • Using - 创建一个与Observable具有相同寿命的一次性资源

条件和布尔Operator

评估一个或多个ObservableObservable产生的项

  • 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 - 拼接两个或者多个Observable
  • Count - 计算源Observable产生的项的个数,并产生这个值
  • Max - 确定并产生Observable产生值中的最大值
  • Min - 确定并产生Observable产生值中的最小值
  • Reduce - 对Observable产生的每个项应用函数变换,并且有序的产生最终变换结果
  • Sum - 计算Observable所有产生项的和,并产生这个和的值

Connectable Observable Operator

特殊的Observable具有更多的动态的精确控制的订阅方式。

  • Connect - 指示一个可连接的Observable开始产生项到它的订阅者
  • Publish - 转化一个普通的Observable为一个可连接的Observable
  • RefCount - 使一个可链接的Observable的行为跟普通的Observable一样
  • Replay - 确保所有观察者看到的产生项序列一样,即使它们在Observable产生项以后才订阅

Blocking Observable Operator

  • To - 将Observable转化为其他对象或者数据结构