首先在playground 中给ObervableType增加一个扩展。方便查看子类订阅时发生的变化
|
|
PublishSubject
PublishSubject只会把在订阅发生的时间点之后来自原始Observable的数据发射给观察者。
|
|
打印结果如下
|
|
可以看no.2 并没有收到no.2订阅之前发送的信号(2和3)。
ReplaySubject
ReplaySubject会发射所有来自原始Observable的数据给观察者,无论它们是何时订阅的。也 有其它版本的ReplaySubject,在重放缓存增长到一定大小的时候或过了一段时间后会丢弃旧 的数据(原始Observable发射的)。
|
|
打印结果如下
|
|
会将订阅之前的信号发给新订阅者。如果指定了buttersize,会根据buttersize(我理解为多少个)发送之前的数据
BehaviorSubject
当观察者订阅BehaviorSubject时,它开始发射原始Observable最近发射的数据(如果此时还 没有收到任何数据,它会发射一个默认值),然后继续发射其它任何来自原始Observable的 数据。
|
|
打印结果
|
|
Variable
Variable是BehaviorSubject的一层封装。特点不会被显式终结。即:不会收到 .Completed 和 .Error 这类的终结事件,它会主动在析构的时候发送 .Complete 。
|
|
打印结果
|
|
- Demo地址https://github.com/RockyAo/RxSwift_learn.或者直接看官方的demo