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

    xiaoxiao2026-09-03  4

    重点参考文章: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() 操作符分析

    转载请注明原文地址: https://ju.6miu.com/read-1311840.html
    最新回复(0)