RXSwift之Observable

2021-01-15  本文已影响0人  李先生的咸柠七

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事件:

nextnext事件就是通常携带数据<T>的事件。

1.png

errorerror事件表示一个错误,它携带了具体错误内容,只要Observable发出了error eventObservable就会终止,不会再发出error事件了。

2.png

completedcompleted事件表示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)
上一篇下一篇

猜你喜欢

热点阅读