什么是RxSwift?
ReactiveX(简写: Rx) 是一个可以帮助我们简化异步编程的框架。它拓展了观察者模式。使你能够自由组合多个异步事件,而不需要去关心线程,同步,线程安全,并发数据以及I/O阻塞。
RxSwift
是ReactiveX的Swift版本,也就是一个函数式响应编程的框架。
RxSwift
的核心是想是 Observable<Element> sequence,Observable表示可监听(或可观察),并且sequence可以接受异步信号,也就是说RxSwift
的核心思想是可接受异步信号的监听序列。
RxSwift
中灵活的编程模型使许多不同的用例成为可能如:绑定,包括UI绑定;重操作;代理;KVO;通知。
RxSwift
把我们程序中每一个操作都看成一个事件,比如一个TextField中的文本改变,一个按钮被点击,或者一个网络请求结束等。每一个事件源就可以看成一个sequence,当我们改变里面的文本的时候,这个TextField就会不断的发出事件,从这个sequence中不断的流出,我们只需要监听这个sequence,每流出一个事件就做相应的处理。
基本概念
Observable : 可被观察的,事件源
Observer : 观察者,观察者需要订阅Observable,才能收到其发出的事件
DisposeBag : 相当于iOS中的ARC,会在适当的时候销毁观察者,自动去释放资源
Subscribe : 订阅者,用于订阅sequence发出的事件,比如next事件,error事件等
ObservableType.subscribe的回调(事件信息)
.Next(value) 表示新的事件数据
.Error 表示完结,但是代表异常导致的完结
.Completed 表示事件序列的完结
信号处理的顺序
Observable有个隐式的约定,那就是在一个信号处理完成之前,不会发送下一个信号,不管发送信号的线程是并发还是串行。
RxSwift Workflow
大致分为这么几个阶段:先把 Native Object 变成 Observable,再通过 Observable 内置的各种强大的转换和组合能力变成新的 Observable,最后消费新的 Observable 的数据。