Добавили 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 игнорирует планировщики
