函数响应式编程之RxSwift
RxSwift是用Swift语言写的ReactiveX系列框架之一,其核心就是FRP(Functional Reactive Programming)即函数响应式编程。其优点就是可以简化异步编程方法,并提供更优雅的数据绑定。让我们可以时刻响应新的数据同时顺序地处理它们。
函数响应式编程
分为函数式和响应式,如图:
分解图
函数式
函数简单的说就是从A(定义域)到B(值域)的一个映射过程。
所以函数式编程应该是一个从入参到返回值的黑盒子,我们只需调用对应的方法,拿到想要的结果。
eg:y=f(x) y的值随x值的变化而变化。当然,x和y也可能是一个函数
函数式编程抽取了很多常用操作,作为高阶函数,比如map,filter,reduced.通过这些函数使我们的代码更简洁,可读性更高。
数组过滤
[1, 2, 3, 4, 5, 6].filter{ $0 % 2 == 0 }
数组元素增值
[1, 2, 3, 4, 5, 6].map{ $0 * 5 }
数组元素和
[1, 2, 3, 4, 5, 6].reduce(0, +)
响应式
在程序开发中,a=b+c;赋值之后,b或者c的值变化后,a的值不会跟着变化。响应式编程目标就是,如果b或者c的数值发生变化,a的数值会同时发生变化
在响应式编程当中,a=b+c声明的是一种绑定关系。a与b、c绑定起来了,所以b、c的变化会影响a,这也就是所谓【变化传播】。
响应式编程是一种基于异步数据流概念的编程模式。数据流就像一条河:它可以被观测,被过滤,被操作,或者为新的消费者与另外一条流合并为一条新的流。
响应式编程的一个关键概念是事件。事件可以被等待,可以触发过程,也可以触发其它事件。
今天,响应式编程最通用的一个场景是UI:我们的App必须做出对网络调用、用户触摸输入和系统弹框的响应。传统的方式我们需要通过设置代理,监听来实现变化响应。在RxSwift中我们只需要通过.rx调用对应的函数即可
RxSwift在基础控件中的使用.png
RxSwift的重要性:
- Swift是一门静态语言,它没有像OC一样的运行时状态来发送、转发等操作,而RxSwift就是可以弥补这一语言特性。
- RxSwift的函数响应式编程思想是必须要掌握的。
RxSwift的三步曲
- 序列的创建
通过Observable.create 来创建一个可被观察的的序列 - 订阅、消毁
通过.subscribe .addDisposableTo(disposeBag)来订阅、销毁 -
发送信号
.onNext() 发送信号
三步曲.png