在Java的前面加上了Rx并非一种新的语言,而是在用 java 实现的 reactive extensions,固然还有不少其余语言的实现,如 rxNet,RxJs,Rxscala......ReactiveX是利用可观察序列编写异步事件和基于事件的程序的库。html
它扩展了观察者模式以支持数据序列和/或事件序列,并添加了操做符,这些操做符容许您以声明方式组合序列,同时抽象出对低级别线程、同步、线程安全、并发数据结构和非阻塞I/O等问题的关注。java
在可观察模型容许您使用像操做数组或者集合的简单、可操做的操做来处理异步事件流。它使您从回调的网络中解脱出来,从而使代码可读性更强,并且更不容易出错。react
ReactiveX提供了一个操做符集合,这些操做符能够过滤、选择、转换、组合和合成观测值。这能够有效地执行和组合。而后咱们看一下在Java上的实现android
而后咱们先写个demo看看,加入依赖,我这里用了低版本的 1.3.5,不妨碍演示git
让咱们先建立一个Observable:github
而后建立一个 Subscriber 来消费这个数据:数组
而后咱们把这二者组合起来:安全
当订阅完成时,myObservable调用 subscriber 的next()和onComplete()方法。所以,mySubscriber输出“hello,world!”,而后终止。网络
而后咱们简化一下代码,RxJava具备多个内置的建立 Observable 方法来实现经常使用任务。在本例中,Observable.just() 发出一个 item,而后完成,下面的代码和上面相似。数据结构
若是咱们并不关心onCompleted()和onError(),所以咱们可使用一个简单的类来定义在onNext()期间应该作什么:
如今,让咱们把方法调用连接起来,去掉这些变量:
这里咱们可使用Java 8 lambdas,变的更加简洁:
未完待续!!
代码:https://github.com/woshiyexinjie/rxjava-leaner.git
参考:
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0430/2815.html(中文)
http://reactivex.io/tutorials.html(官方)
有什么讨论的内容,能够加我公众号: