RxJava--一图胜千言

  • 本篇的目的在于 “通过代码执行的流程,以观察者模式的拉模型,对RxJava的思想进行理解”

前置知识

  1. 观察者模式
  2. RxJava基本用法
  3. RxJava源码大概阅读

代码执行流程

  • Observable.create(new ObservableOnSubscribe()).map(xxx).map(xxx).subscribeOn(xxx).observeOn(xxx).subscribe(new Observer())
  • 这段代码执行的代码顺序如下:
时序图:

简略流程图

在这里插入图片描述

理解

  1. 总体分三步,第一步创建所有的被观察者对象(observable);执行了最后的subscribe()方法的瞬间,开始第二步:从下游往上注册所有观察者(observer);紧接着第三步:从最上游发数据一直发到最下游(onNext),可以看成是观察者模式的notify操作。
  2. 实际上,想按常规观察者模式来看RxJava不太好理解,因为它跟常规观察者模式 “一对多,被观察者主动更新观察者” 的思想不太一样。RxJava其实是一种 “拉模型” 的观察者模式,而不是常规的 “推模型” ,区别就在于 “拉模式” 是观察者主动去拉取被观察者的数据(可以理解成git的pull操作),RxJava的“拉”操作就是 subscribe 这个方法。
  3. 本质上,调用 subscribe 拉取操作的瞬间,biubiubiubiu往上注册,再biubiubiubiu往下发送,最终在我们创建的Observer的onNext方法里拿到数据。

扩展:

背景:subscribeOn只会在第一次执行时生效、observeOn每次调用都生效,如何通过本文对这个现象进行解答?
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值