Rxswift订阅到接收的代码分析

159 阅读1分钟

Rxswift订阅到接收的代码分析

订阅

代码如下

订阅代码

代码分析 订阅代码 包含了对是检测处理的闭包进入到对subscribe的实现我们可以看到如下内容

订阅的实现

代码分析 最终会调用subscribe()的,其中observer中存储了订阅的事件操作。在我的上一篇分析Rxswift中分析到了最终将调用这些操作是在创建序列的onXXX,即下边的这部分

let ob = Observable<Any>.create { (obserber) -> Disposable in 
// 3:发送信号 
obserber.onNext("发送信号") 
obserber.onCompleted() obserber.onError(NSError.init(domain: "XXXX", code: 100886, userInfo: nil)) 
return Disposables.create() }

这些observer是通过订阅时候传过来的sink observer.onXXX--->sink.on--->父类的sink.forwardOn--->sink._observer.on(event),而这里的_observer就是我们订阅时候 保存在匿名观察者中的操作

而我们的匿名观察者AnonymousObserver调用父类的ObserverBase中的on方法,二on方法会调用子类的onCore