本文由做者 KunMinX 原创,与 7 万进阶读者共同向上生长 🔥java
本文最初是为部门内部培训而准备的,但通过一番调研发现,同事们用不惯 RxJava,并非由于网上介绍 “怎么用” 的教程不够多,偏偏是由于,一上来就急着发车的教程无数、却从未有过哪篇教程 舍得用几句话的功夫点破 RxJava 操做符究竟为什么方神圣、咱们为何要用、为何要那样用。数据库
Observable.just(1, 3, 5, 7, 9)
.map(i -> i + 1)
.filter(i -> i < 5)
.subscribe(getObserve());
复制代码
事实上,在至关长的一段时间里,我也和大部分人同样,只知道使用 RxJava 来完成异步回调,至于那些操做符,则是能不用尽可能不用,由于不知道葫芦里卖的什么药,看不懂、不会用。编程
所以,本文的初衷毫不是翻译官方文档、教你们怎么用,而是旨在帮助你们对 RxJava 操做符 完成感性上的认识。鉴于本次培训的效果还不错、同事们听了都说好,我便在 GitHub 开源了全套操做符示例代码(不要慌,连接文末已给出)。若是你在阅读本文后以为恍然大悟,原来 RxJava 操做符是这么回事,那么个人愿望也就达到了。异步
我对操做符本质的顿悟,始于我对编程语言的理解。和你同样,我是作安卓开发,但有一天,我决定跳出 Java,从整个计算机科学的角度来学习和理解编程语言的本质,在这过程当中,我接触了“编程范式”这个概念,了解到原来每一个编程语言大都包含多种编程范式。编程语言
常见的编程范式有:命令式编程、声明式编程等。post
以 Java 为例,我们 Java 最主要的编程范式是命令式编程。命令式编程 即按顺序执行具体的命令,这些命令不只交待了作什么,还详细交待了每一步怎么作。学习
SQL 也是种编程语言,是一种典型的声明式编程。声明式编程的特色是,只交待作什么,但无须交待怎么作。spa
下面回到咱们最初的问题上来。你之因此用不惯 RxJava 操做符,是由于你习惯性地使用命令式编程思惟 来理解其实是声明式编程的操做符。 学习操做符,就和你在大学里接受的 SQL 语句同样理所固然。翻译
SQL 你是理解的,就是按必定的规则,向数据库中的数据声明你要作什么。 3d
同理,RxJava 也是按必定的规则,向数据流声明你要作什么。
转换成代码,便成为如下这样。
Observable.just(1, 3, 5, 7, 9)
.map(i -> i + 1)
.filter(i -> i < 5)
.subscribe(getObserve());
复制代码
这样说,你理解了吗?
GitHub:RxJava 魔法师:学习操做符,就像学习 SQL 😉
看不过瘾?这里只为你 而准备了一份 简洁有力的 《重学安卓》认知地图 😉