我正在为搜索字段使用 MoyaRx 网络,并希望在该字段为空时取消请求。
let response = request
.flatMapLatest {
provider.rx.request($0)
.map(T.self)
.asDriver(onErrorRecover: { error in
return Driver.just(.error(error))
})
}
但是 Moya 手册没有适合我的目的的代码。你能推荐点什么吗?
最佳答案
以下是您要查找的内容:
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 以接受另一个事件。
关于swift - RxSwift 取消 RxMoya 网络请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56005094/