中文官网地址:https://beeth0ven.github.io/RxSwift-Chinese-Documentation/
1,Observable:可监听序列,也称为可被观察的序列,可以用于描述元素异步产生的序列
2,subscribe:是响应发出的序列,即产生的事件
next - 序列产生了一个新元素
error - 创建序列时产生了一个错误,终止
completed - 序列得所有元素都已经成功产生,整个序列完成
3,Observable包含的特征序列:(Observable可以发出多个元素)
> Single:要么只能发出一个元素,要么产生一个error时间
> Completable:要么产生一个completed事件,要么产生一个error事件
> Maybe:要么发出一个元素,要么产生一个completed事件,要么产生一个error事件
> Driver:不会产生error事件,一定在MainScheduler监听
> Signal:和Driver相似,唯一的区别是,Driver会对新观察者回放上一个元素,而Signal不会对新观察者回放上一个元素
> ControlEvent:专门用于描述UI控件所产生的事件
4,Observer:观察者,是用来监听事件,对事件做出相应的,简单来说就是.subscribe后边那一坨,或者.bind 后边那一坨等
tap.subscribe(onNext: { [weak self] in
self?.showAlert()
}, onError: { error in
print("发生错误: \(error.localizedDescription)")
}, onCompleted: {
print("任务完成")
})
创建观察者最直接的方法就是在 Observable 的 subscribe 方法后面描述,事件发生时,需要如何做出响应。而观察者就是由后面的 onNext,onError,onCompleted的这些闭包构建出来的。
5,Observer包含的特征观察者:
AnyObserver:用来描述任意一种观察者
Binder:不会处理错误事件,确保绑定都是在给定Scheduler上执行(默认MainScheduler)
例:
let observer: AnyObserver<Data> = AnyObserver { (event) in
switch event {
case .next(let data):
print("Data Task Success with count: \(data.count)")
case .error(let error):
print("Data Task Error: \(error)")
default:
break
}
}
URLSession.shared.rx.data(request: URLRequest(url: url))
.subscribe(observer)
.disposed(by: disposeBag)
—————————————————————————
usernameValid
.bind(to: usernameValidOutlet.rx.isHidden)
.disposed(by: disposeBag)
可以看作是:
let observer: AnyObserver<Bool> = AnyObserver { [weak self] (event) in
switch event {
case .next(let isHidden):
self?.usernameValidOutlet.isHidden = isHidden
default:
break
}
}
usernameValid
.bind(to: observer)
.disposed(by: disposeBag)
6,操作符:
filter - 过滤
map - 转换
zip - 合并
网友评论