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

После одной сетевой ошибки поиск перестаёт реагировать на ввод

$query
    .debounce(for: .milliseconds(300), scheduler: RunLoop.main)
    .flatMap { text in api.searchPublisher(text) }   // AnyPublisher<[Item], Error>
    .catch { _ in Just([]) }
    .receive(on: DispatchQueue.main)
    .assign(to: &$results)

В метро один запрос упал по таймауту, список очистился. Сеть вернулась, но поиск больше не реагирует на ввод, пока экран не открыть заново. Почему?

  • catch заменил всю цепочку на Just, и она завершилась
  • debounce перестаёт работать после ошибки
  • assign(to:) отписывается при пустом массиве
  • Just([]) нужно заменить на Empty()

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

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

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

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