Вот то, что вы ищете:
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 для принятия другого события.