swift - RxSwift 取消 RxMoya 网络请求

标签 swift networking request rx-swift moya

我正在为搜索字段使用 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/

相关文章:

swift - 无法使用有界流对执行流式请求

sockets - 通过 ssh 隧道使用套接字进行双向通信

java - 检查Java中自己的应用程序的Internet使用情况

javascript - 等到页面准备好加载所有社交媒体按钮

json - 使用python将json和文件发送到flask

ios - 加载核心数据获取请求的结果集

ios - 更改日期较早的单元格的背景颜色

ios - 神秘的 UIActivityIndi​​catorView 错误?

networking - SCP(安全复制协议(protocol))文件传输如何工作?

php - 从 Android-App 获取网页上的 POST 数据?