响应式编程
响应式编程(Reactive Programming,简称RP)
也是一种编程范式,于1997年提出,可以简化异步编程,提供更优雅的数据绑定
一般与函数式融合在一起,所以也会叫做:函数响应式编程(Functional Reactive Programming,简称FRP)比较著名的、成熟的响应式框架
1、ReactiveCocoa
简称RAC,有Objective-C、Swift版本
官网: http://reactivecocoa.io/
github:https://github.com/ReactiveCocoa
2、ReactiveX
简称Rx,有众多编程语言的版本,比如RxJava、RxKotlin、RxJS、RxCpp、RxPHP、RxGo、RxSwift等等 ü 官网: http://reactivex.io/
github: https://github.com/ReactiveX
RxSwift
RxSwift(ReactiveX for Swift),ReactiveX的Swift版本
源码:https://github.com/ReactiveX/RxSwift
中文文档: https://beeth0ven.github.io/RxSwift-Chinese-Documentation/RxSwift的github上已经有详细的安装教程,这里只演示CocoaPods方式的安装
1 Podfile
use_frameworks!
target 'target_name' do
pod 'RxSwift', '~> 5'
pod 'RxCocoa', '~> 5'
end
2 命令行
pod repo update
ppod install
3 导入模块
import RxSwift
import RxCocoa
- 模块说明
RxSwift:Rx标准API的Swift实现,不包括任何iOS相关的内容
RxCocoa:基于RxSwift,给iOS UI控件扩展了很多Rx特性
let observable = Observable<Int>.timer(.seconds(2), period: .seconds(1), scheduler: MainScheduler.instance)
let _ = observable
.takeUntil(self.rx.deallocated)
.map { "数值是:\($0)" }
.bind(to: label.rx.text)
observable.subscribe(onNext: { element in
print("next", element)
}, onError: { error in
print("error", error)
}, onCompleted: {
print("completed")
}).disposed(by: bag)
observable.subscribe { event in
switch event {
case .next(let element):
print("next", element)
case .error(let error):
print("error", error)
case .completed:
print("completed")
}
}.disposed(by: bag)