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 继承体系
订阅、序列流程
订阅调用方法流程图