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队列中,再异步的进行消费处理,这里很自然的有了 “生产者”和“消费者”的概念。
再来看看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队列中,再异步的进行消费处理,这里很自然的有了 “生产者”和“消费者”的概念。
相关文章推荐
- RxJava 源码解读分析 subscribeOn 方法
- RxJava 源码解读分析 flatMap
- RxJava 源码解读分析 observeOn
- RxJava 源码解读分析 defer
- RxJava 源码解读分析 观察者模式
- RxJava 源码解读分析 map
- RxJava 源码解读分析 just
- RxJava之just与from源码解读
- RxJava 源码解读分析 Scheduler
- decruft(A library to extract meaningful data from a webpage) 源码分析
- 深入java NIO系列之通道分析与源码解读(二)
- Hadoop RPC的机制分析和源码解读
- FAST(Features fromaccelerated segment test)源码分析
- java PriorityQueue 原理分析及源码解读
- Cloudify源码分析——ant build解读
- jQuery源码解读之hasClass()方法分析
- SIFT特征分析与源码解读
- Python之美[从菜鸟到高手]--浅拷贝、深拷贝完全解读(copy源码分析)
- KVM QEMU 解读(原理及源码分析)
- 解读和分析Linux核心源码的两种方法