RxSwift(V) - 源码解析

2020-06-07  本文已影响0人  Harely

RxSwift 角色定位

Observable<String>.create { observer -> Disposable in
  observer.onNext("hello")
  return Disposables.create()
}
.subscribe { event in
  print(event.element)
}


Observable(被观察者)继承链

观察类继承链



Observable 继承体系

a. subscribe 订阅操作, ObservableObserver 通过订阅建立联系,
Observable 好比水源, Observer 好比水龙头(永远开着的水龙头), 订阅的过程就是在ObservableObserver 之间建立管道, 一旦建立管道即是永久性的,只要水源有谁, 水龙头就会有水;
b. run 对用户不可见,隐藏了大量的实现细节, 这个函数就是建立水管的过程;
c. asObservable: 这个协议的存在使得Observable 的定义变得更加广泛。

    public func asObservable() -> Observable<Element> {
        return source
    }

-ObservableType 协议扩展

extension ObservableType {
    public func subscribe(_ on: @escaping (Event<E>) -> Void)
        -> Disposable {
            let observer = AnonymousObserver { e in
                on(e)
            }
            return self.asObservable().subscribe(observer)
    }
}

ObservableType:扩展 subscribe方法, 确保所有的Observable行为一致, 都是经由self.asObservable()获取Observable;


Observer 继承体系

Observer 继承体系 Observer 继承体系

订阅、序列流程

订阅调用方法流程图
上一篇 下一篇

猜你喜欢

热点阅读