Запрос в Future уходит на сервер, хотя на издатель никто не подписался
func fetchPromo() -> AnyPublisher<Promo, Error> {
Future { promise in
api.loadPromo { result in promise(result) }
}
.eraseToAnyPublisher()
}
let promo = fetchPromo() // подписка будет позже, если пользователь откроет баннер
В логах сервера запрос промо приходит при каждом открытии главного экрана, даже когда баннер не открывали. Почему и как исправить?
- Future стартует сразу; обернуть в Deferred
- eraseToAnyPublisher запускает издатель
- Future нужно подписать через share()
- Замыкание promise вызывается при компиляции
