文章目录
前言
说到RxSwift,不得不提ReactiveX,什么是ReactiveX?ReactiveX与RxSwift有什么关系?请看下文。
1.ReactiveX
ReactiveX 是 Reactive Extensions 的缩写,简写为Rx。官方定义为一个使用可观察数据流进行异步编程的API。
Rx不仅仅是一个编程接口,更是一种编程思想的突破。它拓展了观察者模式,使你能够自由组合多个异步事件,而不需要去关心线程,同步,线程安全,并发数据以及I/O阻塞。
Rx结合了观察者模式、操作符、迭代器模式、调度器及函数式编程的精华。
- 观察者模式 Observable:对某些数据流(很广,可以是一些事件等)进行处理,使其变成可观察对象(Observable)序列,这样观察者(observer)就可以订阅这些序列;
- 操作符 Operators:然而对于订阅者来说(observer)某些选项(items)并不是自己需要的(需要过滤),某些选项(items)需要转换才能达到自己的目的;
- 迭代模式 Iterator:使集合或者序列中的值可以进行遍历;
- 调度器 Scheduler:为了提升用户体验,或其它目的,有些操作需要放到特定的线程去执行,比如 UI 操作需要放到主线程,这就涉及到了调度器。
所以 Rx 可以这样概括,Rx = Observables + LINQ + Schedulers,其中 LINQ(Language Integrated Query)语言集成查询,比如那些操作符号。
Rx影响了许多其它的程序库和框架以及编程语言,几乎每种语言