RxJava基础知识(一)
RxJava是 Reactive Extensions的java实现,用于通过使用Observable/Flowbale序列来构建异步和基于事件的程序的库,可以说是观察者设计模式的一种扩展。是一种函数响应式编程,那么什么是函数响应式编程呢?
什么是响应式编程:
响应式编程是一种面向数据流和变化传播的编程范式,这意味着可以在编程语言中很方便的表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。
响应式编程具有如下几个特点:
异步编程:提供合适的异步编程模型
数据流:基于数据流模型,响应式编程提供一套同意的Stream风格的数据处理接口
变化传播:简单来说就是以一个数据流为输入,经过一连串的操作转化为另一个数据流,然后分发给各个订阅者的过程
前端流行的响应式设计指的是网页能够自动调整布局和样式以适配不同尺寸的屏幕,与我们谈论的响应式编程是两个完全不同的概念。
什么是函数式编程:
函数式编程是“结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用;在函数式编程中,数据是不可变的;
什么是函数响应式编程(Functional Reactive Programming 简称FRP)
函数响应式编程结合了函数式和响应式的优点,把函数范式里的一套思路和响应式编程合起来就是函数响应式编程;传统的面向对象的编程是通过抽象出的对象关系来解决问题,函数式编程是通过函数的组合来解决问题,响应式编程是通过函数式编程的方式来解决回调地狱问题
使用RXJava的优势:
1.使用观察者模式,可以方便的创建事件流和数据流;使用查询式的操作符组合和变换数据流,订阅任何可观察的数据流并执行
2.函数式的编码风格,对可观察的数据流使用无副作用的输入,输出函数,避免程序里错综复杂的状态
3.简化代码,Rx的操作符通常可以将复杂的难题简化为很少的代码
4.异步错误处理:传统的try catch没办法处理异步计算,Rx提供了合适的错误处理机制
5.轻松使用并发
6.操作符可组合,使用灵活
7.Rx对并发性和异步性没有任何特殊的偏好
第一个Hello Word
Observable.create(new ObservableOnSubscribe(){
@Override
public void subscribe(ObservableEmitter emitter) throws Exception {
emitter.onNext("Hello World");
}
}).subscribe(new Consumer() {
@Override
public void accept(String s) throws Exception {
System.out.println(s);
}
});
使用Lambda表达式简化
Observable.just("Hello World").subscribe(System.out::println);