【程序系列翻译】ReactiveX

ReactiveX系列

ReactiveX 是http://reactivex.io提供的响应式框架,采用观察者模式+链式api构成,目前支持语言如下:

【程序系列翻译】ReactiveX - Operators

ReactiveX系列翻译,仅翻译通用篇,共计5篇内容:

  1. Observable
  2. Operators
  3. Single
  4. Subject
  5. Scheduler

只有理解了这五大内容,学习起来才会有目标和场景。以后不管你去使用RxJava,还是RxSwift,中心思想不会跳出这些内容。

本文是第二篇:操作符

简述了常用的操作符的作用

正文


【程序系列翻译】ReactiveX - Operators


在ReactiveX的不同语言实现中,都会提供一系列操作符。尽管大部分操作符,每种语言都实现了,但是还是有少部分是某种语言特有的。因此。每种语言在操作符命名上都是根据语言本身类似的操作符名称。

  1. 链式操作符:大多数运算符都在Observable上运行并返回一个Observable。这样使得你可以采用链式调用把这些操作符穿起来。在一个链中,链中的每个运算符都会修改由前一个运算符的运算产生的Observable。当然,还有其他模式,比如Builder模式,在Builder模式中,链的操作符顺序就没有那么重要了。
  2. ReactiveX操作符:本文将为你列举ReactiveX中的核心操作符以及他们的详细介绍链接。并且提供一个决策树,帮你在实际中选择使用那些操作符。最后,在ReactiveX的许多特定于语言的实现中,有一个按字母顺序排列的大多数运算符列表。

【程序系列翻译】ReactiveX - Operators


  • 一、新建Observable:

发起新Observables的运营商。
  1. Create:创建一个新的Observable
  2. Defer:在观察者订阅之前不要创建Observable,并为每个观察者创建一个新的Observable
  3. Empty/Never/Throw :创建具有非常精确和有限行为的Observable
  4. From:将一些其他对象或数据结构转换为Observable
  5. Interval:创建一个Observable,它发出一个由特定时间间隔隔开的整数序列
  6. Just:将对象或一组对象转换为发出该对象或那些对象的Observable
  7. Range:创建一个发出一系列连续整数的Observable
  8. Repeat:创建一个Observable,重复发出特定项目或项目序列
  9. Start:创建一个发出函数返回值的Observable
  10. Timer:创建一个在给定延迟后发出单个项目的Observable

  • 二、转换Observable:

转换Observable发出的项的运算符。
  1. Buffer:定期将Observable中的项目收集到捆绑包中并发出这些捆绑包,而不是一次发送一个项目
  2. FlatMap:将Observable发出的项目转换为Observables,然后将这些项目的排放量变为单个Observable
  3. GroupBy:将Observable划分为一组Observable,每个Observable从原始Observable发出不同的项目组,按键组织
  4. Map:通过将函数应用于每个项目来转换Observable发出的项目
  5. Scan:将函数应用于Observable发出的每个项目,按顺序,并发出每个连续的值
  6. Window:定期将Observable中的项目细分为Observable窗口并发出这些窗口,而不是一次发出一个项目

  • 三、过滤Observable:

有选择地从源Observable中发出项的运算符。
  1. Debounce:如果特定的时间跨度已经过去而没有发出另一个项目,则只从Observable中发出一个项目
  2. Distinct:抑制Observable发出的重复项
  3. ElementAt:仅发出Observable发出的项目n
  4. Filter:仅发出通过特定条件的Observable中的那些项
  5. First:从Observable中仅发出第一个项目或满足条件的第一个项目
  6. IgnoreElements:不从Observable中发出任何项目,但镜像其终止通知
  7. Last:仅发出Observable发出的最后一项
  8. Sample:在周期性时间间隔内发出Observable发出的最新项目
  9. Skip:抑制Observable发出的前n个项目
  10. SkipLast:抑制Observable发出的最后n个项目
  11. Take:
    仅发出Observable发出的前n个项目
  12. TakeLast:仅发出Observable发出的最后n个项目

  • 四、合并Observable:

使用多个源Observable创建单个Observable的运算符
  1. And/Then/When:通过模式和计划中介组合两个或多个Observable发出的项目集
  2. CombineLatest:当一个项目由两个Observable中的任何一个发出时,通过指定的函数组合每个Observable发出的最新项目,并根据此函数的结果发出项目
  3. Join:在根据另一个Observable发出的项目定义的时间窗口期间发出一个Observable中的项目时,组合两个Observable发出的项目
  4. Merge:通过合并它们的排放,将多个Observable组合成一个
  5. StartWith:在开始从源Observable中发出项之前,发出指定的项序列
  6. Switch:将发出Observables的Observable转换为单个Observable,该Observable发出最近发出的Observables发出的项目
  7. Zip:通过指定的功能将多个Observable的排放组合在一起,并根据此功能的结果为每个组合发出单个项目

  • 五、错误处理:

有助于从Observable中恢复错误通知的操作员
  1. Catch:通过继续序列而不出错来从onError通知中恢复
  2. Retry:如果源Observable发送onError通知,则重新订阅它,希望它能完成而不会出错

  • 六、常用工具:

用于处理Observable的有用运算符的工具箱
  1. Delay:将Observable的排放量及时转移一定量
  2. Do:注册一个动作来承担各种Observable生命周期事件
  3. Materialize/Dematerialize:表示发出的项目和作为发出项目发送的通知,或者反转此过程
  4. ObserveOn:指定观察者将观察此Observable的调度程序
  5. Serialize:强制Observable进行序列化调用并保持良好状态
  6. Subscribe:对观察者的排放和通知进行操作
  7. SubscribeOn:
    指定Observable在订阅时应使用的调度程序
  8. TimeInterval:将发射物品的Observable转换为发出这些发射之间经过的时间量的指示的Observable
  9. Timeout:镜像源Observable,但是如果在没有任何发出的项目的情况下经过了特定的时间段,则发出错误通知
  10. Timestamp:将时间戳附加到Observable发出的每个项目
  11. Using:创建一个与Observable具有相同生命周期的可支配资源

  • 七、条件Observable:

评估Observables发出的一个或多个Observable或项目的运算符
  1. All:确定Observable发出的所有项目是否符合某些标准
  2. Amb:给定两个或多个源Observable,仅从第一个Observable中发出所有项目以发出项目
  3. Contains:确定Observable是否发出特定项目
  4. DefaultIfEmpty:从源Observable发出项目,如果源Observable不发出任何内容,则发出默认项目
  5. SequenceEqual:确定两个Observable是否发出相同的项目序列
  6. SkipUntil:丢弃Observable发出的项目,直到第二个Observable发出项目为止
  7. SkipWhile:丢弃Observable发出的项目,直到指定的条件变为false
  8. TakeUntil:在第二个Observable发出项目或终止后,丢弃Observable发出的项目
  9. TakeWhile:在指定条件变为false后丢弃Observable发出的项目

  • 八、数学运算:

操作Observable发出的整个项目序列的运算符
  1. Average: 计算Observable发出的数字的平均值并发出此平均值
  2. Concat:从两个或多个Observable发射发射而不交错
  3. Count:计算源Observable发出的项目数,并仅发出此值
  4. Max:确定并发出Observable发出的最大值项
  5. Min:确定并发出Observable发出的最小值项
  6. Reduce:按顺序将一个函数应用于Observable发出的每个项目,并发出最终值
  7. Sum:计算Observable发出的数字之和并发出此总和

  • 九、背压:

处理Observables的策略比观察者消耗它们更快


  • 十、连接:

具有更精确控制的订阅动态的特殊观察者
  1. Connect:指示可连接的Observable开始向其订户发送项目
  2. Publish:将普通的Observable转换为可连接的Observable
  3. RefCount:使Connectable Observable的行为类似于普通的Observable
  4. Replay:确保所有观察者都看到相同的发射物品序列,即使他们在Observable开始发射物品后订阅

  • 十一、转化:

  1. To:将Observable转换为另一个对象或数据结构
【程序系列翻译】ReactiveX - Operators

此树可以帮助您找到您正在寻找的ReactiveX Observable运算符

(由于排版问题,暂时不发布)

【程序系列翻译】ReactiveX - Operators

【程序系列翻译】ReactiveX - Operators

【程序系列翻译】ReactiveX - Operators

【程序系列翻译】ReactiveX - Operators

【程序系列翻译】ReactiveX - Operators

【程序系列翻译】ReactiveX - Operators

【程序系列翻译】ReactiveX - Operators

【程序系列翻译】ReactiveX - Operators

【程序系列翻译】ReactiveX - Operators

【程序系列翻译】ReactiveX - Operators

【程序系列翻译】ReactiveX - Operators

【程序系列翻译】ReactiveX - Operators

总结

操作符是整个ReactiveX系列最常用的功能,通过这一篇文章可以解决你大部分问题。篇幅过长,适合收藏。在你忘记怎么使用的时候,可以翻翻,也许就找到思路了。


分享到:


相關文章: