RxSwift之Observable订阅、事件监听、订阅销毁
订阅Observable
有了Observable
,我们还要使用subscribe()
方法来订阅它,接收它发出的Event
。
订阅方法1
使用subscribe()
订阅一个Observable
对象,该方法的block
回调参数就是被发出的event
事件:
- 初始化
Observable
序列时设置的默认值都按顺序通过.next
事件发送出来; - 当
Observable
序列的初始数据都发送完毕,它还会自动发一个.completed
事件出来。
1 | let observable = Observable.of("A","B","C") |
如果想要获取这个事件里的数据,可以通过event.element
得到:
1 | let observable = Observable.of("A","B","C") |
订阅方法2
使用将event
进行分类的subscribe
方法:
- 通过不同的
block
回调处理不同类型event
, - 会把
event
携带的数据直接解包作为参数; subscribe()
方法的四个参数onNext
、onError
、onCompleted
、onDisposed
都是有默认值的,即它们都是可选的,可以只处理onNext
。
1 | let observable = Observable.of("A","B","C") |
监听事件的生命周期
doOn
- 使用
doOn
方法来监听事件的生命周期,它会在每一次事件发送前被调用; doOn
方法可以通过不同的block回调处理不同类型的event
do( onNext: )
方法会在subscribe( onNext: )
前调用do( onCompleted: )
方法会在subscribe( onCompleted: )
1 | let observable = Observable.of("A", "B", "C") |
Observable的销毁(dispose)
一个Observable
序列被创建出来后不会马上被激活,而是要等到被订阅之后才会才激活发出Event
Observable
序列被激活之后要一直等到它发出了.error
或者.completed
的event
之后才会被销毁。
dispose() 方法
- 手动调用
dispose()
:取消订阅 - 当一个订阅被
dispose
了,那么之后Observable
如果再发出event
,这个dispose
的订阅就收不到消息了。
1 | let observable = Observable.of("A", "B", "C") |
DisposeBag
DisposeBag
用来管理多个订阅行为的销毁,它会在自己将要被dealloc
的时候,对它里面的所有订阅行为调用dispose()
方法
1 | let disposeBag = DisposeBag() |