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