Есть ли способ получить подписки, обратившись к издателю?
В приведенном ниже примере я создал издателя, на него подписались два подписчика и издатель отправил значение.
Здесь, в этом простом сценарии, все работы объединяются в пару строк кода. Легко заметить, кто подписался на издателя. Однако в реальном приложении каждая работа разделена на части, и подписчикам трудно заметить его с точки зрения издателя.
Итак, есть ли у издателя свойства для получения доступа к подписчикам или подпискам? Или вы предлагаете шаблон проектирования, чтобы сделать поток данных между издателем и подписчиком более очевидным?
final class IntSubscriber: Subscriber {
typealias Input = Int
typealias Failure = Never
func receive(subscription: Subscription) {
print("receive subscription")
subscription.request(.max(3))
}
func receive(_ input: Int) -> Subscribers.Demand {
print("Received value", input)
return .none
}
func receive(completion: Subscribers.Completion<Never>) {
print("Received completion", completion)
}
}
let subject = PassthroughSubject<Int, Never>()
let subscriber1 = IntSubscriber()
let subscriber2 = IntSubscriber()
subject.subscribe(subscriber1)
subject.subscribe(subscriber2)
// send a value without knowing who might get the value?
subject.send(3)