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回调处理不同类型的eventdo( 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() |