ReactiveX-入门篇
2016-07-06 09:23
489 查看
ReactiveX简介:
An API for asynchronous programming with observable streams。分解一下这个句子:
API: 首先它是个编程接口,不同语言提供不同实现。例如JVM语言中的RxJava。
For asynchronous programming: 使用场景,异步变成环境中。
With observable streams: 基于可观察的事件流
事实上,在异步协作(编程)中,所有的协作都是基于事件机制,通过事件发布与订阅机制,实现双方的解耦。流的概念则与流式中的概念是一样的,流意味中源源不断,只要有流到来,就会启动相应的处理流程。
ReactiveX组合了以下3者:
1. 观察者模式:观察感兴趣的目标并在特定事件发生时做出反应。
2. Iterator模式:迭代,其实就是流式的概念,不断迭代、循环、处理。
3. 函数式变成: 在针对目标事件做出反应的时候,使用函数式编程的方式进行相应。
下面的动态图很形象地解释了Reactive:
下图更进一步解释Observable广播时间的机制:
RxJava例子
Java、JS、PHP、Scala等语言都针对ReactiveX提供了实现,这里以Java为例写一个简单的示例。首先引入RxJava的maven依赖:
<dependency> <groupId>io.reactivex</groupId> <artifactId>rxjava</artifactId> <version>1.1.6</version> </dependency>
简单例子:
import rx.Observable; import rx.functions.Action1; public class RxTest { public static void main(String[] args) { hello("Brandon" , "Braney" , "world"); } public static void hello(String... names) { Observable.from(names).subscribe(new Action1<String>() { @Override public void call(String s) { System.out.println("Hello " + s + "!"); } }); } }
输出:
Hello Brandon! Hello Braney! Hello world!
Observable.from(T[] array)将数组转化为Observable对象,并将数组中的元素作为流对象元素发布。除了从数组外,还可以从Iterable、Future等对象转化为Observable。Observable对象是ReactiveX的核心,代表着被观察的对象,或者说是事件流的抽象。更多信息参考doc文档:http://reactivex.io/RxJava/javadoc/
from方法返回的是Observable对象,调用该对象的subscribe方法,可以订阅该对象,在该对象发布事件(item)时得到相应的调用。其中Action1表示一个参数的回掉,也就是call()方法带有一个参数。除了Action1,还有Action2,Action3,…ActionN.
参考
官网:http://reactivex.io/Github:https://github.com/ReactiveX
相关文章推荐
- ReactiveCocoa系列之signal流程详解
- 史上最详细Windows版本搭建安装React Native环境配置
- React/React Native 的ES5 ES6写法对照表-b
- ReactiveCocoa 浅析
- # ReactiveCocoa - 进阶篇
- React Native的自我实践之window下的安装
- ReactOS 新手指南
- React Native学习笔记之一
- React Native学习-将 'screen', 'window' or a view生成图片
- React Native学习-measure测量view的宽高值
- React Native教程 - 调用Web API
- 最快让你上手ReactiveCocoa之基础篇
- React学习总结(1)——开始
- windows 7下React Native环境配置
- ReactiveCocoa基础one
- RN入门
- 来自一个react SPA的总结--es6的应用
- React Native Changed the World? or Nothing.
- webpack -p压缩打包react报语法错误处理
- React与AngularJS到底那个更快...