RxJava 源码解读分析 from

我们继续,看看observable.from()是怎么回事,from源码如下图。


再来看看OnSubscribeFromArray这个类,如下图


我们发现,OnSubscribeFromArray就是一个OnSubscribe,要实现了call()接口,call()方法中,只是设置了一个新的FromArrayProducer,再来看看child.setProducer()方法,如下图:


由于原始的Subscriber很早就被转换为SafeSubsciber,所以,passToSubscriber为true,setProducer()方法会被执行2遍,但最终还是调用了producer.request()方法,这个producer就是上上图中提到的FromArrayProducer。我们来直接看看request()方法做了什么,如下图:


看到了吧,最终还是for each element in array, do child.onNext(t),从array头到尾,顺序的emit出数据,而这里的child就是原始的Subscriber。

同理,如果是observeOn(scheduler),就是异步的将emit出的数据放到queue队列中,再异步的进行消费处理,这里很自然的有了 “生产者”和“消费者”的概念。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值