RXSwift之Observable序列原理(2)

匿名 (未验证) 提交于 2019-12-02 23:51:01

以上面为例,

第一步:创建序列,Observable继承自ObservableType,Observable没有create方法,所以去ObservableType里面查看

这里不能看到create的具体实现,可以去create.html文件里面查看

从上面可以看到create返回的是一个继承自Producer的匿名观察者AnonymousObservable对象,并且在初始化时将subscribe保存了一份到self._subscribeHandler,到这里创建序列基本就完成。

第二步:订阅信号

现在创建了序列,也订阅了信号,那在什么地方发送信号呢?

第三步:发送信号

我们上下找会发现在订阅信号的return方法里面有一句代码


所以self.asObservable()也就是前面的self(注意Observable是Producer的父类),然后相当于执行AnonymousObservable().subscribe(observer),此时observer是AnonymousObserver<Any>对象,里面保存有各种枚举对应的event闭包回调.

我们去AnonymousObservable定义里面发现没有找到subscribe方法,然后去父类Producer里面查找

这里有一个run方法,继续找,子类AnonymousObservable有实现这个方法,所以直接去子类

继续找AnonymousObservableSink的run方法

此时的parent即上面传过来的self,也就是最开始的AnonymousObservable对象ob,而第一步创建序列时我们将

保存在self._subscribeHandler,此时parent._subscribeHandler(AnyObserver(self))就是发送信号。

而我们前面提到了observer里面保存有各种枚举对应的event闭包回调,所以这里发送不同的信号,会根据不同的枚举值响应不同的事件。

我理解的流程大致就是这些,有什么问题,忘各位大佬多多指教!

文章来源: https://blog.csdn.net/chen___xi/article/details/97000373
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!