我想使用异步/等待调用实现类似多播委派的东西,这样,如果多个客户端调用相同的async
方法,则当值返回时,所有客户端都会收到它.
例如,使用纯回调可能如下所示(简化):
struct DataSource {
typealias Listener = (Value) -> Void
private var listeners: [Listener] = []
func fetchData(_ callback: Listener) {
listeners.append(callback)
let value = ... // Get data from some async service
listeners.forEach { $0(value) }
}
}
但对于异步/等待,如果我有这样的情况,我有点迷茫:
struct DataSource {
func fetchData() async -> Value {
let value = ... // Get data from some async service
return value
}
}
如何获取N个不同位置的返回值?我不是新并发系统的专家,所以我可能错过了一些东西.