时间, 或者说是时机, 实际上是异步编程中的根本问题. 而 Rx 要实现的也是对随时间变化的异步数据流进行有效组织管理. 故Rx在这个方面提供了若干的操作符便于编程. 下面就来看看.
1 概述
首先设置好示例工程, 然后开始在工程中进行相关操作.
2 缓存操作符
第一组操作符是 buffering 类型的操作符. 它可以实现重新发送已发送的数据(replay), 或者是在指定的时间去发射数据等. 总地来说, 他们可以决定在何时以何种方式去发射过去的和新的数据.
2.1 重现已发送的数据
有的时候希望在新的观察者到达的时候, 能够观察到之前的部分或全部的数据, 这样的功能可以通过两个操作符实现: replay
以及 replayAll
.
首先来定义一些常量, 之后的编程需要使用这些值:
let elementsPerSecond = 1
let maxElements = 5
let replayedElents = 1
let replayDelay: TimeInterval = 3
其中 elementsPerSecond 的作用是控制每秒发射的数据数量.
先创建一个随时间变换而不停发射数据的 Observable, 然后在它最后使用 replay() 操作符, 结果就是创建出一个缓存了最近若干个数据的 Observable.
这个需要仔细去看, 当前没有 source code , 没法跟着他一起去搞...
2.2 不限制缓存数据个数
如果不想限制缓存的数据个数, 则可以使用 replayAll
操作符.
3 时间变换操作符
4 定时器操作符
略.