您的位置:首页 > 编程语言 > Java开发

RxJava 源码解读分析 from

2017-05-04 18:05 369 查看
我们继续,看看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队列中,再异步的进行消费处理,这里很自然的有了 “生产者”和“消费者”的概念。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息