RxSwift 取消 RxMoya 网络请求
Posted
技术标签:
【中文标题】RxSwift 取消 RxMoya 网络请求【英文标题】:RxSwift Canceling RxMoya networking request 【发布时间】:2019-05-06 12:19:15 【问题描述】:我正在为搜索字段使用 MoyaRx 网络,并希望在该字段为空时取消请求。
let response = request
.flatMapLatest
provider.rx.request($0)
.map(T.self)
.asDriver(onErrorRecover: error in
return Driver.just(.error(error))
)
但是 Moya 手册没有我的目的的代码。你能提出一些建议吗?
【问题讨论】:
【参考方案1】:以下是您要查找的内容:
let response = request
.flatMapLatest
$0.isEmpty ? Driver.empty() :
provider.rx.request($0)
.map(T.self)
.asDriver(onErrorRecover: error in
return Driver.just(.error(error))
)
请注意,我添加了一行。我假设$0
是字符串类型。
如果字符串为空,flatMapLatest 将取消任何正在进行的请求并发出completed
事件,而不是发出请求。这不会完成链,因为request
也必须在链完成之前完成,但它会设置 flatMapLatest 以接受另一个事件。
【讨论】:
以上是关于RxSwift 取消 RxMoya 网络请求的主要内容,如果未能解决你的问题,请参考以下文章
使用 RxMoya 在 RxSwift 上未获得 Completed 事件
RxSwift - 使用 maxCount 重试网络请求直到成功
使用 RxSwift 在网络请求后更新 SwiftUI 列表