使用 RxAlamofire 创建 Observable 包含网络请求的结果
Posted
技术标签:
【中文标题】使用 RxAlamofire 创建 Observable 包含网络请求的结果【英文标题】:Using RxAlamofire to create Observable contain the result of network request 【发布时间】:2017-04-05 16:37:46 【问题描述】:我正在尝试使用RxAlamofire
来包装网络请求结果。
我的目标是触发请求、处理 JSON 响应并创建包含网络操作成功或发生任何错误的 Observable。
在其他地方,我可以调用创建 Observable 的函数并订阅它,并通过错误消息通知用户它是成功还是失败。
我的实现如下:
func discoverMovieList(for url: String, withPagg page: Int) -> Observable<Any>
let requestUrl = "\(url)&page=\(page)"
return RxAlamofire.json(.get, requestUrl)
.map jsonResponse in
self.createOrUpdateMoviesList(from: JSON(jsonResponse))
我们如何更正代码以及如何从其他地方调用它以通知处理结果?
【问题讨论】:
您能否明确说明当前实现的问题是什么? 您好,感谢您的回复。当前的实现没有问题。我想问我们如何使用它来跟踪网络请求的结果。例如,仅当第一个请求完成时才执行其他请求 【参考方案1】:Observable 定义多个生命周期回调,您使用subscribe
方法提供。在这种情况下,用法是这样的:
discoverMovieList(for: "http://some.url", withPagg: 2)
.subscribe(
onNext: movies in
uiElement.string = "Movie list received"
,
onError: error in
uiElement.string = "Something went wrong"
)
.disposed(by: disposeBag)
disposeBag
用于保存订阅,所以当 disposeBag 被释放时,订阅被取消(在我们的例子中,网络调用将被中止)。
【讨论】:
谢谢。我的 self.createOrUpdateMoviesList(from: JSON(jsonResponse)) 仅从 jsonResponse 更新 coredata (它什么都不返回)我们如何链接响应。即更新核心数据完成后触发另一个请求?一开始可能没有使用地图?以上是关于使用 RxAlamofire 创建 Observable 包含网络请求的结果的主要内容,如果未能解决你的问题,请参考以下文章
RxAlamofire 使用 json 正文进行 post call