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

[RxJava学习]操作符Map源码分析

2016-08-16 21:37 429 查看
重点参考文章:RxJava基本流程和lift源码分析

1.首先创建初始的Observable、Subscriber对象;操作符map的入参是Func1类型的,我们创建一个Func1类型的对象:



2.代码的主体就是:

Observable.create(onSubscribe1)
.map(transformer1);
.subscribe(subscriber1);


3.涉及的操作符的实现:



4.我们将代码主体逐句拆解开,看一下逻辑流:



5.代码执行的顺序是从Observable.subscribe()触发的,执行流如下图:



5.分析执行结果:

我们的代码主体是:

Observable.create(onSubscribe1)
.map(transformer1);
.subscribe(subscriber1);


实际的执行逻辑是:

subscriber1.onStart();
subscriber2.onStart();
R result = transformer1.call("1");
subscriber1.onNext(result);
subscriber1.onCompleted();


5.1 初始的observable1中的subscriber指的并不是subscriber1,而是map操作符创建的临时subscriber2;

5.2 map操作临时创建了一个Observable和Subscriber对象;它作为链条上游(observable1)的订阅者Subscriber,作为链条下游(subscriber1)的被/可观察对象Observable;

最近又看到了一篇写Map原理的文章,写得挺不错。推荐下:RxJava进阶之源码分析map() 操作符分析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  RxJava