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

Добавили subscribe(on: main) — UI всё равно обновляется из фона

api.ordersPublisher()                    // внутри dataTaskPublisher
    .subscribe(on: DispatchQueue.main)
    .map { $0.filter { $0.isActive } }
    .sink(receiveCompletion: { _ in },
          receiveValue: { [weak self] in self?.render($0) })
    .store(in: &cancellables)

Разработчик ожидал, что subscribe(on: main) переведёт всю цепочку на главный поток, но render всё равно вызывается на фоновой очереди. Почему?

  • subscribe(on:) не меняет поток доставки значений
  • subscribe(on:) работает, только если стоит после map
  • DispatchQueue.main нельзя передавать в Combine
  • sink с receiveCompletion игнорирует планировщики

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

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

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

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