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

RxJava 学习笔记<一>

2018-03-09 16:09 302 查看
摘要: RxJava

在Java的前面加上了Rx并不是一种新的语言,而是在用 java 实现的 reactive extensions,当然还有很多其他语言的实现,如 rxNet,RxJs,Rxscala......ReactiveX是利用可观察序列编写异步事件和基于事件的程序的库。



它扩展了观察者模式以支持数据序列和/或事件序列,并添加了操作符,这些操作符允许您以声明方式组合序列,同时抽象出对低级别线程、同步、线程安全、并发数据结构和非阻塞I/O等问题的关注。

在可观察模型允许您使用像操作数组或者集合的简单、可操作的操作来处理异步事件流。它使您从回调的网络中解脱出来,从而使代码可读性更强,而且更不容易出错。

ReactiveX提供了一个操作符集合,这些操作符可以过滤、选择、转换、组合和合成观测值。这可以有效地执行和组合。然后我们看一下在Java上的实现



然后我们先写个demo看看,加入依赖,我这里用了低版本的 1.3.5,不妨碍演示



让我们先创建一个Observable:



然后创建一个 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(官方)
有什么讨论的内容,可以加我微信公众号:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  RxJava