RxJava2.0 全异步编程 简介

时间:2024-04-14 07:27:27

1 基本概念

1.1 响应式编程

一种以 异步 数据流为核心的编程方式。这里的数据一般是一些事件;而流则是时间序列上的一系列的事件。任何东西都可以转化为数据流,如变量、用户输入事件、数据结构等。说直白点,为了让异步操作更简单,避免进入回调地狱。

1.2 ReactiveX

一种响应式扩展框架,有很多实现,例如 RxJava, RxJdbc,RxGo,RxKoltin,几乎所有主流语言。

官网这样定义:Rx是一个使用 可观察数据流 进行 异步编程 的编程接口,ReactiveX 结合了观察者模式、迭代器模式和函数式编程的精华;

微软给出的定义: Rx是一个函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序,使用Rx,开发者可以用Observables表示异步数据流,用LINQ

操作符查询异步数据流, 用Schedulers参数化异步数据流的并发处理。Rx可以这样定义:Rx = Observables + LINQ + Schedulers;

官网: http://reactivex.io

github: https://github.com/Reactive-Extensions

1.3 RxJava

RxJava2.0 全异步编程 简介

 

用这张图可以概况RxJava 的组成, 可以抽象成 Observable、Observer、Scheduler 组成。

Observable

可观察对象

Observer

观察者

Scheduler

线程的一种抽象,不同的 Scheduler 代表了不同的线程

Single

一个特殊的Observable,只发射单个数据

SingleObserver

single的观察者

 

2.  一些操作

Single的操作符

Single也可以组合使用多种操作,一些操作符让你可以混合使用Observable和Single:

操作符 返回值 说明
compose Single 创建一个自定义的操作符
concat and concatWith Observable 连接多个Single和Observable发射的数据
create Single 调用观察者的create方法创建一个Single
error Single 返回一个立即给订阅者发射错误通知的Single
flatMap Single 返回一个Single,它发射对原Single的数据执行flatMap操作后的结果
flatMapObservable Observable 返回一个Observable,它发射对原Single的数据执行flatMap操作后的结果
from Single 将Future转换成Single
just Single 返回一个发射一个指定值的Single
map Single 返回一个Single,它发射对原Single的数据执行map操作后的结果
merge Single 将一个Single(它发射的数据是另一个Single,假设为B)转换成另一个Single(它发射来自另一个Single(B)的数据)
merge and mergeWith Observable 合并发射来自多个Single的数据
observeOn Single 指示Single在指定的调度程序上调用订阅者的方法
onErrorReturn Single 将一个发射错误通知的Single转换成一个发射指定数据项的Single
subscribeOn Single 指示Single在指定的调度程序上执行操作
timeout Single 它给原有的Single添加超时控制,如果超时了就发射一个错误通知
toSingle Single 将一个发射单个值的Observable转换为一个Single
zip and zipWith Single 将多个Single转换为一个,后者发射的数据是对前者应用一个函数后的结果