美文网首页
RxSwift(五)探索RxSwift核心逻辑之发送信号及总结

RxSwift(五)探索RxSwift核心逻辑之发送信号及总结

作者: 伤心的EasyMan | 来源:发表于2019-08-01 22:44 被阅读0次

    RxSwift(三)探索RxSwift核心逻辑之创建序列
    RxSwift(四)探索RxSwift核心逻辑之订阅序列
    RxSwift(五)探索RxSwift核心逻辑之发送信号及总结

    前言

    Talk is cheap, show me the code!

    探索过程

    • 老规矩,还是点击进入源代码


      image
    • 来到了ObserverType里的onNext函数,当我再想进入里面的源码时,发现有很多个选择,一个个选当然不靠谱咯,很简单的事,加个断点,看看self的类型

      image
    • 断点看到了self的类型是 RxSwift.AnyObserver<String>,所以找AnyObserver的on方法进去看看

      image
    • 看到这里发现很熟悉,这不就是在上篇文章里探索到的吗?所以刚才的observer.on调用的就是 AnonymousObservableSink.on!!!

      image
    • 然后去找到AnonymousObservableSink.on,调用的是这里的self.forwardOn

      image
    • 然后找到是self._observer.on, 调用的是AnonymousObservableSink._observer.on

      image
    • 在上一篇文章探索订阅序列的时候,然后沿着这个路径往回找这个observer,然后发现在这个observer就是一开始就创建的AnonymousObserver

      image
    • 所以其实AnonymousObservableSink._observer.on调用的就是AnonymousObserver.on,然后这个on方法其实就是遵循的ObserverType协议里的on方法, 在ObserverBase里找到这个on方法,.next这些都是调用了onCore方法

      image
    • 然后这里保存了eventHandler的事件代码块, onCore是执行这个事件代码块

      image
    • 然后这个eventHandler是哪里调用的呢?不就是我们创建序列时传递进去的吗?正好回到了创建序列的起点,value = "这是新号"

      image
    • 这时回到外面,豁然开朗, 第三步发送信号后走到了 订阅序列的闭包里,所以能打印出
      订阅到:这是信号, 源码解析到这里,就基本掌握了RxSwift的核心逻辑了。一路探索下来,真的很神奇!!希望看到这篇文章的人也能跟着探索一遍,探索完真的很爽!!!

      image

    RxSwift核心逻辑图解

    image

    总结

    1. RxSwift很神奇,万物皆序列
    2. RxSwift的函数响应式编程思想令人惊叹,下沉式操作体现了函数式,用sink来封装一些开发者不关心的逻辑,便于使用
    3. 响应式的体现就是这个事件流了,订阅一次竟然能实现只要接收到响应就能源源不断的接收到信号,一直响应,从未停止

    相关文章

      网友评论

          本文标题:RxSwift(五)探索RxSwift核心逻辑之发送信号及总结

          本文链接:https://www.haomeiwen.com/subject/inuhdctx.html