美文网首页
RxSwift(V) - 源码解析

RxSwift(V) - 源码解析

作者: Harely | 来源:发表于2020-06-07 16:45 被阅读0次

RxSwift 角色定位

  • 观察者(Observer)
  • 被观察者(可观察的)(Observable)
  • 订阅者(Subscriber) 事件的最终处理者
  • 管道(Sink) Observer 和 Observable 沟通的桥梁
Observable<String>.create { observer -> Disposable in
  observer.onNext("hello")
  return Disposables.create()
}
.subscribe { event in
  print(event.element)
}


Observable(被观察者)继承链

  • Observable 继承关系图

观察类继承链



Observable 继承体系
  • Observable的核心函数

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

  • asObservable的函数实现:
    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 继承体系

订阅、序列流程

订阅调用方法流程图

相关文章

网友评论

      本文标题:RxSwift(V) - 源码解析

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