RxSwift 和 Moya 同步请求

Posted

技术标签:

【中文标题】RxSwift 和 Moya 同步请求【英文标题】:RxSwift and Moya synchronous request 【发布时间】:2018-03-20 20:06:46 【问题描述】:

现在我遇到了一种情况,我从分离的线程开始多个请求,比如线程池。

我想让这些请求同步,因此它们将在完全相同的线程上启动和结束,而不是在主线程上。

我尝试设置.observeOn(CurrentThreadScheduler.instance),但由于响应处理程序线程始终是主线程而不是当前线程。

是否可以将当前线程指定为响应的处理线程?

【问题讨论】:

【参考方案1】:

是否可以将当前线程指定为处理线程 回应?

有办法!看看MoyaProvider类。

/// Request provider class. Requests should be made through this class only.
open class MoyaProvider<Target: TargetType>: MoyaProviderType 

    /// Propagated to Alamofire as callback queue. If nil - the Alamofire default (as of their API in 2017 - the main queue) will be used.
    let callbackQueue: DispatchQueue?

    /// Initializes a provider.
    public init(..., callbackQueue: DispatchQueue? = nil, ...) 
        ...
        self.callbackQueue = callbackQueue
    

您可以提供回调队列。只需提供所需的队列即可。

【讨论】:

以上是关于RxSwift 和 Moya 同步请求的主要内容,如果未能解决你的问题,请参考以下文章

在使用 RxSwift 和 mvvm 发出 moya 请求时添加微调器,并在用户收到响应时将其关闭

RxSwift+Moya+Moya_ObjectMapper+MJRefresh,刷新失败?

RxSwift/Moya - 如果通过函数返回序列将不会启动

如何使用 Moya 框架重试请求

RxSwift 更新身份验证令牌

使用 RxSwift 在网络请求后更新 SwiftUI 列表