RxSwift Отмена сетевого запроса RxMoya - PullRequest
1 голос
/ 06 мая 2019

Я использую сеть MoyaRx для поля поиска и хотел бы отменить запрос, когда поле пусто.

let response = request
    .flatMapLatest {
        provider.rx.request($0)
        .map(T.self)
        .asDriver(onErrorRecover: { error in
            return Driver.just(.error(error))
        })
    }

Но в руководствах Мойи нет кода для моей цели.Можете ли вы что-то предложить?

1 Ответ

0 голосов
/ 06 мая 2019

Вот то, что вы ищете:

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 для принятия другого события.

...