本文是示例主要来自于官方的实例代码,可从这里下载 ,实例代码稍有改动。其中的图片来自于reactivex.io/
本文主要的作用是查看实例代码并查看对应实例代码的效果,不需要运行项目
操作符目录
- RxSwift官方使用示例之<创建和订阅Observables>
- RxSwift官方使用示例之<使用Subjects>
- RxSwift官方使用示例之<组合操作符>
- RxSwift官方使用示例之<转换操作符>
- RxSwift官方使用示例之<过滤及条件操作符>
- RxSwift官方使用示例之<数学和聚合操作符>
- RxSwift官方使用示例之<可连接操作符>
- RxSwift官方使用示例之<错误处理操作符>
debug 操作符会打印所有的 subscriptions, events, disposals
toArray
将一个 Observable
序列转换为一个数组,将该数组作为一个新的单元素 Observable
序列发出,然后终止
let disposeBag = DisposeBag()
Observable.range(start: 1, count: 10)
.toArray()
.subscribe {
// 注意返回的是 Result 对象
switch $0 {
case .success(let result):
print(result)
case .failure:
print("Error")
}
}
.disposed(by: disposeBag)
打印
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
reduce
从初始种子值开始,然后对 Observable
序列发出的所有元素应用累加器闭包,并将聚合结果作为单元素 Observable
序列返回
let disposeBag = DisposeBag()
Observable.of(10, 100, 1000)
.reduce(1, accumulator: +)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
打印
1111
注意与
scan
操作符结合理解,scan
会输出每一次的中间结果,而reduce
只输出最终的结果,叫单元素Observable
序列
concat
以顺序的方式连接来自 Observable
序列的内部 Observable
序列的元素,等待每个序列成功终止,然后再从下一个序列发出元素
let disposeBag = DisposeBag()
let o1 = PublishSubject<Int>()
let o2 = PublishSubject<Int>()
o1.concat(o2)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
o1.onNext(1)
o1.onNext(1)
o1.onNext(1)
o1.onCompleted()
o2.onNext(2)
o2.onNext(2)
o2.onCompleted()
打印
1
1
1
2
2