Android开发Android知识Android技术知识

翻译ReactiveX操作符(二)

2017-12-02  本文已影响0人  lanceJin

官方文档链接:http://reactivex.io/documentation/operators.html

1.前言


接着讲解剩下的那一半操作符。这些操作符相对而言比较高级,大部分都不太常用,但在某些情况下可以明显减少代码逻辑,提高工作效率,还是有必要了解的。

2.实用辅助操作符


辅助被观察者的操作符的集合

3.条件判断操作符


判断一到多个被观察者及它们产生的事件的操作符

4.数学计算操作符


作用于被观察者产生的整个事件队列的操作符

5.背压处理操作符


应对被观察者产生事件的速率大于观察者消耗的速率的操作符

在ReactiveX中不难遇到这种场景,一个被观察者产生事件的速率大于操作符或观察者消耗的速率。下面给出处理不断增长积压的未消耗事件的办法。

例如,假设使用zip()操作符来压缩两个无穷事件的被观察者,其中一个产生事件的速率是另一个的两倍。按照这种简单的实现,不得不为快的被观察者产生的、最终需与慢的被观察者合并的事件,维持一个不断增长的缓存,可能导致ReactiveX占用大量的系统资源。有各种策略来控制数据流和背压,以期缓解产生事件快的被观察者遇上消耗事件慢的观察者而导致的问题。某些ReactiveX实现中,模拟背压操作和特定背压操作符。

冷类型的被观察者在观察者方便时,按照观察者期望的速率开始产生指定的事件队列,不会扰乱事件队列的完整性。例如,被观察者内有静态迭代器,不管它多晚被订阅或事件多频繁被捕获,都将产生相同的事件队列。冷类型的被观察者产生事件的例子,包括数据库查询的结果、文件检索或网络请求

热类型的被观察者创建后立即开始产生事件,订阅者通常从事件队列中间的某个位置开始捕获它的事件,即被观察者订阅之后产生的第一个事件开始。这样的被观察者按自己的步调产生事件,任由自己的观察者订阅。热类型的被观察者产生事件的例子,包括鼠标和键盘事件、系统事件或股票价格

当冷类型被观察者多播时(它被转换成可连接的被观察者且connect()方法被调用),它将变成动态的,且为了背压和控制数据流应该被当作热类型被观察者对待。在某些ReactiveX实现中,冷类型被观察者是实现背压理想的响应模拟模型(具体在后面描述),热类型被观察者通常不能很好地实现响应模拟模型,且有更好的控制数据流策略,例如buffer()sample()debounce()window()

参考的文章:

6.连接类型操作符


特定被观察者能更精确地控制订阅的动态

7.转换类型操作符


To — 将一个被观察者转换成另一个对象或数据结构。

To.png

ReactiveX的各种特定语言实现有不同的操作符,能用来将被观察者或被观察者产生的事件队列转换成另一种对象或数据结构。其中一些操作符阻塞进行直到被观察者终止,再产生一个等价的对象或数据结构;其它则返回产生该对象或数据结构的被观察者。

在某些ReactiveX的实现中,也有一个操作符可以将被观察者转换成“阻塞的”被观察者。该被观察者提供一系列方法来扩展普通被观察者,并对产生的事件进行阻塞操作。一些to()操作符实现,属于该被观察者系列的扩展操作。

参考的文章:

8.总结


ReactiveX的所有操作符到此就介绍完了,是不是感觉很多,有点记不住,而且不知道该如何使用。没关系,下一篇将介绍操作符的决策树,帮助你判断什么情况下使用什么操作符。给大家推荐几篇帮助理解的专栏:

上一篇下一篇

猜你喜欢

热点阅读