30天學RxSwift——Observer
Observer即觀察者,在RxSwift中有許多名稱的Observer,ObserveBase,AnonymousObserver,AnyObserver等。這裡只討論宣告為public的AnyObserver,internal的型別我們在使用框架的時候不會接觸到,只有當我們想要深入瞭解RxSwift時才有用。
AnyObserver在文件中的解釋是A type-erased `ObserverType`,就是對ObserverType的簡單的實現。ObserverType是觀察者需要遵從的協議,其中最重要的是func on(event: Event)。這裡先看一下Event是什麼。
public enum Event: CustomDebugStringConvertible {
case Next(Element)
case Error(ErrorType)
case Completed
}
Event即是Next,Error,Completed三種訊號的事件。
從語意理解,func on(event: Event)有一句說明:Notify observer about sequence event.通知觀察者事件序列。即事件序列的變化都會通知觀察者,而這個方法就是處理事件變化。ObserverType協議還擴充套件了簡便的方法:final func onNext(element: E),final func onCompleted(),final func onError(error: ErrorType)。
現在再回過頭看就知道AnyObserver是做什麼的了。這是Rx框架中一個重要的概念,在使用過程中會不停地用到,特別是當你不滿足僅僅是使用RxSwift與RxCocoa,而是想將Rx框架融入整個工程時,這是個必須要掌握的知識。
對於AnyObserver我們還需要掌握的是init方法。public init(eventHandler: EventHandler)和public init(_ observer: O)。前一個用事件處理方法來初始化,後一個是用另一個ObserverType來初始化(這裡兩個ObserverType的元素應該是一樣的。)。從原始碼中可以驗證前面的觀點,ObserverType最重要的是func on(event: Event)。
寫下這些文章首要的目的就是希望能最快地在實際的專案中使用Rx框架,與我學習Swift的目的是一樣的:希望以更優雅的方式程式設計。因此雖然只講了幾個基礎的概念,後面開始要將RxCocoa結合進來,將具體與抽象結合進行介紹。
相關文章
- RxSwift學習Swift
- 30天學習編寫30個Swift小程式Swift
- RxSwift 案例學習(一)Swift
- RxSwift學習筆記Swift筆記
- vue observer 原始碼學習VueServer原始碼
- 30天從零開始學習SwiftSwift
- RxSwift 01 ReactiveCocoa 與 RxSwiftSwiftReact
- Linux(ubuntu)下30天自制os學習引導,第0天(1)LinuxUbuntu
- RXSwift學習(1)—tableView的簡單建立SwiftView
- 應用Observer介面實踐Observer模式Server模式
- RxSwift - ObservableSwift
- RxSwift進階(一)-RxSwift的初體驗Swift
- Java:應用Observer介面實踐Observer模式薦JavaServer模式
- RxSwift 之 ObservableSwift
- MVVM+RxSwiftMVVMSwift
- RxSwift小DemoSwift
- RxSwift 基礎Swift
- RxSwift 之 SubjectSwift
- RxSwift -- 變換Swift
- Mutation Observer用法Server
- 【RxSwift 實踐系列 1/3】為什麼使用RxSwiftSwift
- 在30天內學習漸進式Web應用開發Web
- 30天自制作業系統:第三天作業系統
- 機器學習30天進階實戰機器學習
- RXSwift學習(2)—網路請求Moya的基本使用Swift
- Observer原始碼解析Server原始碼
- Mutation Observer優點Server
- ora.ctssd OBSERVERServer
- vue響應式原理學習(二)— Observer的實現VueServer
- ZG前端學習第二天2020-10-30前端
- 30 天的 Github 挑戰,我從中學到的 5 個經驗Github
- 30 天精通 RxJS (02): Functional PrograJSFunction
- 30 天精通 RxJS (21):深入 ObservableJS
- 10個專案實戰,30天學會爬蟲,這個學習路線絕了爬蟲
- What’s new in RxSwift 5Swift
- RxSwift 之過濾操作Swift
- 比較RAC和RxSwiftSwift
- RxSwift 之變換操作Swift