您的位置:首页 > Web前端 > React

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