一、为什么要使用 RxSwift?
因为使用 RxSwift 框架我们可以使 target-action、 代理 、 闭包回调 、 通知 、 多个任务之间的依赖 、 等待多个并发任务完成之后处理结果 等等的编程场景变得 逻辑清晰、易读、易维护。
RxSwift 的优点:
- 复合 – Rx 就是复合的代名词。
- 复用 – 因为它易复合。
- 清晰 – 因为声明都是不可变更。
- 易用 – 因为它是抽象了的异步编程,使我们统一了代码风格。
- 稳定 – 因为 Rx 是完全通过单元测试的。
二、函数响应式编程
什么是函数式编程?
函数式编程 是种编程范式。它需要我们将函数作为参数传递,或者作为返回值返回。我们可以通过组合不同的函数来得到想要的结果。
函数式编程的优点:
- 灵活
- 高复用
- 简洁
- 易维护
- 适应各种需求变化
什么是函数响应式编程?
函数响应式编程 是种编程范式。它是通过构建函数操作数据序列,然后对这些序列作出响应的编程方式。它结合了 函数式编程 和响应式编程。
数据绑定
在 RxSwift 里有一个比较重要的概念就是 数据绑定(订阅)。就是指将 可监听序 列绑定到 观察者 上。
三、RxSwift 核心
RxSwift 的核心组成如下:
- Observable 产生事件
- Observer 响应事件
- Operator 创建变化组合事件(操作符)
- Disposable 管理绑定(订阅)的生命周期
- Schedulers 线程调配队列
3.1 可监听序列
所有的事物都是序列。
序列的类型如下:
- Single:要么只能发出一个事件,要么产生一个 error 事件。
- Completable:要么产生一个 completed 事件,要么产生一个 error 事件。
- Maybe:发出一个元素或者一个 completed 事件或者一个 error 事件。
- Driver:1.)不会产生 error 事件 2.)一定在 MainScheduler 监听(主线程监听)3.)共享附加作用
- Signal:和 driver 类似。
- ControlEvent:1.)不会产生 error 事件 2.)一定在 mainScheduler 订阅 3.)一定在 manScheduler 监听 4.)共享附加作用
driver 和 signal 的区别:Driver 会重新发送上一个元素,Signal 不会。状态序列选 Driver 类型,事件序列选 Signal 类型。
3.2 observer
响应事件的都是观察者。
观察者类型:
- AnyObserver:任意观察者。
- Binder:确保在给定 scheduler 上执行(默认 mainScheduler),一般由于 UI 操作。
3.3 既是可监听序列也是观察者
- AsyncSubject:发出最后一个元素或完成事件。
- PublishSubject:对观察者发送订阅后产生的元素。
- ReplaySubject:对观察者发送全部的元素。
- BehaviorSubject:将源 Observable 中最新的元素发送出来,然后发送新元素。
- ControlProperty:专门用于描述 UI 控件属性。
3.4 Schedulers(线程调配队列)
- MainScheduler:代表主线程。如果你需要执行一些和 UI 相关的任务,就需要切换到该 Scheduler 运行。
- SerialDispatchQueueScheduler:抽象了串行 DispatchQueue。如果你需要执行一些串行任务,可以切换到这个 Scheduler 运行。
- ConcurrentDispatchQueueScheduler:抽象了并行 DispatchQueue。如果你需要执行一些并发任务,可以切换到这个 Scheduler 运行。
- OperationQueueScheduler:抽象了 NSOperationQueue。它具备 NSOperationQueue 的一些特点,例如,你可以通过设置 maxConcurrentOperationCount,来控制同时执行并发任务的最大数量。
3.5 operator(操作符)
RxSwift 的操作符有很多种,具体见下图。
总结
本文主要对为什么要使用 RxSwift 框架?RxSwift 的核心组成,与及 RxSwift 的操作符进行了整理。
文章主要内容来源于 RxSwift