Вступить в клуб →
средняявопросCombine: издатели, подписки и операторы

Запрос в 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 вызывается при компиляции

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела