美文网首页
RXSwift之Observable

RXSwift之Observable

作者: 李先生的咸柠七 | 来源:发表于2021-01-15 18:27 被阅读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)
    

    相关文章

      网友评论

          本文标题:RXSwift之Observable

          本文链接:https://www.haomeiwen.com/subject/lijwaktx.html