【发布时间】:2020-06-16 10:28:35
【问题描述】:
有没有办法通过访问发布者来获取订阅?
在下面的示例中,我创建了一个发布者,并让两个订阅者订阅它并让发布者发送一个值。
在这个简单的场景中,所有工作都在几行代码中组合在一起。很容易注意到谁订阅了发布者。然而,在现实世界的应用中,每件作品都被分割开来,从发布者的角度很难注意到订阅者。
那么,发布者是否具有访问订阅者或订阅的属性? 或者,您是否建议一种设计模式,让发布者-订阅者数据流更加明显?
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)
【问题讨论】:
标签: ios swift combine publisher subscriber