我正在将MoyaRx网络用于搜索字段,并且想在该字段为空时取消请求。
let response = request
.flatMapLatest {
provider.rx.request($0)
.map(T.self)
.asDriver(onErrorRecover: { error in
return Driver.just(.error(error))
})
}
但是Moya手册没有用于我目的的代码。你能建议点什么吗?
答案 0 :(得分:0)
以下是您要寻找的内容:
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
的类型为String。
如果字符串为空,则FlatMapLatest将取消任何正在进行的请求并发出completed
事件,而不是发出请求。这将不会完成该链,因为request
也必须在链完成之前完成,但是它将设置flatMapLatest来接受另一个事件。