Синхронный запрос RxSwift и Moya

Прямо сейчас у меня ситуация, когда я запускаю несколько запросов из отдельных потоков, что-то вроде пула потоков.

Я хочу сделать эти запросы синхронными, чтобы они запускались и заканчивались в одном и том же потоке, а не в основном потоке.

Я попытался установить .observeOn(CurrentThreadScheduler.instance), но поскольку поток обработчика ответа всегда был основным потоком, а не текущим.

Можно ли указать текущий поток как поток обработчика для ответа?


person Procurares    schedule 20.03.2018    source источник


Ответы (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
    }
}

Вам разрешено предоставить очередь обратного вызова. Просто укажите желаемую очередь.

person iWheelBuy    schedule 21.03.2018