На мой взгляд, издатель Future более подходит здесь, поскольку вызов может выдать только один ответ и в конечном итоге завершается неудачей.
В RxSwift есть вспомогательный метод, такой как asSingle.
Я добился этого преобразования, используя следующий подход, но понятия не имею, лучший ли это метод.
Код: Выделить всё
return Future.init { (observer) in
self.urlSession.dataTaskPublisher(for: urlRequest)
.tryMap { (object) -> Data in
//......
}
.receive(on: RunLoop.main)
.sink(receiveCompletion: { (completion) in
if case let .failure(error) = completion {
observer(.failure(error))
}
}) { (response) in
observer(.success(response))
}.store(in: &self.cancellable)
}
}
Подробнее здесь: https://stackoverflow.com/questions/604 ... -publisher
Мобильная версия