首页 > 解决方案 > Swift Combine - 等待所有发布者

问题描述

我正在尝试使用 Swift combine 来运行许多具有相同结果的任务。目前,每个任务都是一个发布者,会发出一个结果。现在我面临一个问题,我必须等待所有发布者发出元素然后继续。有点像调度组。我发现 zip(with: : :_) 运营商需要 4 个出版商。

https://developer.apple.com/documentation/combine/passthroughsubject/3333571-zip

但是如果你有一个发布者数组(如果他们发出相同类型的元素)怎么办?有什么办法吗?

标签: swiftcombine

解决方案


您可以使用MergeMany创建单个下游接收来自多个上游的所有发出的值,然后调用collect()合并的发布者一次发出所有值。

let pubs = [Just(1),Just(2),Just(3)]
let downstream = Publishers.MergeMany(pubs).collect()

推荐阅读