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事件:
1.png
next
:next
事件就是通常携带数据<T>
的事件。
2.png
error
:error
事件表示一个错误,它携带了具体错误内容,只要Observable
发出了error event
,Observable
就会终止,不会再发出error事件了。
3.png
completed
:completed
事件表示Observable
发出的事件完成了,和error
一样,只要Observable
发出后就终止,不在发出event
事件。
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)
网友评论