前言及规划
最近准备学下RXSwift,期许接下来时间 ,能学习了解RxSwift,一方面学习,一方面分享.
简介
RxSwift就是ReactiveX的Swift版本,所以我们先从ReactiveX(简称Rx)官方首页看起(reactivex官网),看看是怎么解释Rx,有这么一句话
ReactiveX is a combination of the best ideas from
the Observer pattern, the Iterator pattern, and functional programming
“Observer”、“Iterator”、“Functional programming”,这三个专用名词,每一个都是很深的知识,我们就先了解下Observer. 那就是说会有一个被观察者(Observable)和多个观察者(Observer),当Observable状态发生改变,Observer就能收到通知,那在Rx中,Observables是Rx的核心,那接下来花些时间来学习下是什么是Observable,怎么创建它和使用它。
Obserable是什么?
Observable就具有特殊功能的序列(sequence),Observable作为RxSwift的基础,是一切的根基。
从左到右的箭头代表时间,带编号的圆圈代表序列的元素。 元素 1 被发送,经过一段时间后,是 2
和 3 将被发送。
Obserable生命周期
这个 Observable 发出三个点击事件之后结束。 竖线代表.completed event,这被称为一个完成的事件,已被终止,不能有任何事件再发出。
红叉代表Observable 发出了一个错误事件。Observable它也被终止并且不能再发出任何其他事件。
再次强调,当发送.completed跟.error后,Observable就会结束(Terminated),此时任务已完成。
如何创建Obserable
1: 使用 just 方法创建
let one = 1
let two = 2
let three = 3
let observable1: Observable<Int> = Observable<Int>.just(one)
2: 使用of 方法创建
let observable2 = Observable.of(one, two, three)
3: 使用from 方法创建
let observable3 = Observable.from([one, two, three])
订阅Obserable
订阅Obserable和Swift标准库Iterator中的调用next()方法很像,如:
let sequence = 0..<3
var iterator = sequence.makeIterator()
while let n = iterator.next() {
print(n)
/* Prints:
0
1
2
*/
那我们来看下如何订阅Obserable
let one = 1
let two = 2
let three = 3
let observable = Observable.of(one,two,three)
let disposeBag = DisposeBag()
observable
.subscribe(onNext: { element in
print(element)
}, onError: { error in
print(error)
}, onCompleted: {
print("onCompleted")
}, onDisposed: {
print("onDisposed")
})
.disposed(by: disposeBag)
当订阅者收到Observable发出的.next、.error、.completed事件时,会执行定义好的代码,执行结果如下:
1
2
3
onCompleted
onDisposed
今天主要学习了Obserable以及如何创建及订阅它,后来还有更多的内容,我会一一学习并分享给大家。