Observable的介绍
Observable作为RxSwift的基础,一切的根基基于此,因此,想要透彻理解RxSwift,我们也要对Observable要有一些基本的了解。
Observable<T>
1.
Observable<T>这个类是RxSwift框架的基础,通常我们把它称作为可观察序列,它存在的作用就是可以异步的产生一系列的Event事件。
2.产生的这些Event事件还可以携带数据,那么泛型<T>就是用来传递这个Event事件携带的数据的类型。
3.那么既然有了Observable可观察序列,我们还需要一个Observer(订阅者)来订阅它,这样这个订阅者才能收到发出的Event事件
event
查看 RxSwift 源码可以发现,事件 Event 的定义如下:
public enum Event<Element> {
/// Next element is produced.
case next(Element)
/// Sequence terminated with an error.
case error(Swift.Error)
/// Sequence completed successfully.
case completed
}
我们可以看到,Event其实就是一个枚举,因此,可以知道Observable可以发出3种不同类型的Event事件:
next:next事件就是通常携带数据<T>的事件。
1.png
error:error事件表示一个错误,它携带了具体错误内容,只要Observable发出了error event,Observable就会终止,不会再发出error事件了。
2.png
completed:completed事件表示Observable发出的事件完成了,和error一样,只要Observable发出后就终止,不在发出event事件。
3.png
Observable 与 Sequence比较
1.为更好地理解,我们可以把每一个 Observable的实例想象成于一个Swift中的 Sequence:
即一个
Observable(ObservableType)相当于一个序列Sequence(SequenceType)。
ObservableType.subscribe(_:)方法其实就相当于SequenceType.generate().
2.区别
Swift中的SequenceType是同步的循环,而Observable是异步的。
Observable对象会在有任何Event时候,自动将Event作为一个参数通过ObservableType.subscribe(_:)发出,并不需要使用next方法。
创建 Observable 序列
RxSwift为我们提供了以下几种方法来创建一个Observable序列。
just()方法
1.该方法通过传入一个默认值来初始化,构建一个只有一个元素的Observable队列,订阅完信息自动complete。
2.下面的样例,我们显示地标注出了Observable的类型为Observable<Int>,即指定了这个Observable 所发出的事件携带的数据类型必须是 Int 类型的。
let observable = Observable<Int>.just(5)


