跳转至

ReactiveXReactive Extensions的缩写,顾名思义就是一种扩展能力。

ReactiveX是一种使用可观察流进行异步编程的API。

ReactiveX中,观察者模式非常有用,可以说ReactiveX观察者模式迭代器模式函数式编程的集大成。

observable-stream.gif

优点

  • 很容易创建事件流和数据流

  • 可以用类查询操作组合或变换流

  • 可以订阅可观察流来产生副作用。

副作用(side effects):在计算机科学中,一个函数或表达式如果被描述为有副作用时,通常是指它们可以修改自身作用范围之外的状态,或者除了返回值之外与外部世界存在着可被观察的交互作用。例如:一个函数可以修改全局变量或静态变量的值、可以修改它的一个参数、可以抛出异常、可以写数据到文件或显示器、可以读数据或者调用其它有副作用的函数,这些影响就被称为副作用。在副作用存在的情况下,一个程序的行为会依赖于它的历史或者计算顺序。

无处不在

  • 前端:处理UI事件和API响应,Web开发可以使用RxJS, 移动开发可以使用Rx.NET和RxJava

  • 跨平台:适用于各种语言的习惯,诸如:Java、Scala、C#、C++、Clojure、JavaScript、Python、Groovy、JRuby及其它语言

  • 后端:使用ReactiveX提供的异步功能,可以实现并发处理,减少程序间的相互依赖。

有更好的编码基础

  • 函数式编程:可以避免复杂的状态依赖编程方式,使用清晰的输入/输出函数和可观察流的概念。

  • 少即是多:ReactiveX的运算符可以显著缩减代码长度。

  • 异步的错误处理:传统的try/catch方式对于异步编程来说作用不大,ReactiveX有相应的机制可以有效的处理这些问题。

  • 并发编程更加容易:可观察对象和调度器允许程序员不用考虑线程、同步和并发等比较艰涩的概念,在更高的抽象上去编程。

Reactive 演进

ReactiveX不仅是一个API,它也是一种思想和在编程艺术上的一个重大突破。它也启发了一些其它的API、框架甚至是编程语言。