希望大家看完这篇文章对RxJava有一个简单的了解。至少是看到了RxJava本质的一面。不再害怕他。

     首先我们看一下用RxJava能达到一个什么样的效果。他可以流式编程,不需要嵌套。试想,我们写程序无非就是处理数据。那RxJava就是处理数据的一个绝佳工具。

    我们忘掉RxJava,我们想,如果我们处理数据是A——B——C——D。我们想把A变成B,中间三条横线,那就代表3个过程,那很简单我们用写3个方法就可以了。但你有没有想过,如果我把这三个方法写到一个语句里面,那是不是逻辑非常清晰,看上去非常舒服,而且我不需要代码跳来跳去,这样会不会更好。如果你认可这样是更好的方式,那我们的RxJava就是为了实现这样的方式的技术。

    所以说白了,RxJava就是为实现上面所说而开发的一个技术。

    我们忘掉RxJava的实现。再以上面的例子,我有三个类,ABC,里面有三个方法abc,a方法可以吧A——B,b方法可以把B——C,c方法可以把C——D,如果要实现链式的调用那就是  C.c(B.b(( A.a(source))),这里可不是链式,这里是嵌套。

    所以你再想想。

    假如A里面有B,那不就是A有B的能力了,所以就变成A.a(){B.b}

    如果A里面有B,B里面又有C那不就是 A.a(source){ B.b(){ C.c}  },其实就是一个装饰者模式。

rxjava 主要用于哪_rxjava 主要用于哪

 

       看上面的代码

       第一个方法 返回是A,我们在emiter里面的onNext方法就相当于A里面的a方法

        当我们进行一次map的时候,其实我们就是把我们的B塞到A里面去,然后在A里面执行a方法的时候(也就是emiter里面执行onNext方法的时候),又执行我们塞进去的B里面的b方法(也就是Function里面的apply方法)

        同样的下一个map,也如上面的描述一样。把又一个funtion塞到上一个funtion里面,也就是一个装饰者模式。

       所以我们总结一下。

      上面贴的代码就是我们的目的,我们想如果我能这么去写代码就好了。而RxJava就是为了实现这种写法而做的努力。

最终他实现了我们的流式调用,其实里面还是各种嵌套,只是他给我们封装了最终展示出来是流式,优雅而舒服。

    聪明的你,只看最终的这段代码,你自己可以去写一个这样的框架吗,你可以试一下。

    所以你看源码就只要看他是怎么把B放进A,C放进B,也就是将上面的funtion放进emiter,然后下一个funtion又是怎么放进上一个funtion的就可以了,其实是一样的。

   以上~    希望看望这篇文章能让你对RxJava有一个了解。