跳过几个简单介绍RxTablview等属性的代码。剩余的例子只剩下俩个了。今天来分析SearchWikipedia
let results = searchBar.rx.text.orEmpty
.asDriver()
.throttle(0.3)
.distinctUntilChanged()
.flatMapLatest { query in
API.getSearchResults(query)
.retry(3)
.retryOnBecomesReachable([], reachabilityService: Dependencies.sharedDependencies.reachabilityService)
.startWith([]) // clears results on new search term
.asDriver(onErrorJustReturn: [])
}
.map { results in
results.map(SearchResultViewModel.init)
}
throttle 忽略时间,这样不会直接在你变动输入的时候立马请求。
distinctUntilChanged 过滤相同的元素。
可以看到DefaultWikipediaAPI 请求了数据然后map成为了model.
下面的方法都比较简单,UI转化为信号绑定。重点来分析DefaultWikipediaAPI里面的网络方法。