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(官方)

有什么讨论的内容,可以加我微信公众号:

猜你喜欢

转载自my.oschina.net/u/2277632/blog/1620851