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 订阅操作, Observable和 Observer 通过订阅建立联系,
Observable 好比水源, Observer 好比水龙头(永远开着的水龙头), 订阅的过程就是在Observable 和 Observer 之间建立管道, 一旦建立管道即是永久性的,只要水源有谁, 水龙头就会有水;
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 继承体系
订阅、序列流程
订阅调用方法流程图











网友评论