【发布时间】:2021-02-24 16:26:14
【问题描述】:
我有一个发送/接收数据数组的主题,例如PassthroughSubject<[Int], Never>()。当收到一个值时,我想将数组拆分为单个值来操作它们,然后再次收集它们。
我知道问题在于flatMap 永远不会发送完成事件。但是我该如何解决这个问题?或者有没有更好的方法来使用 combine 操作数组中的每个值?
编辑: 我不想完成要收集的主题。我想收集音序器的输出。
例子:
import Combine
var storage = Set<AnyCancellable>()
let subject = PassthroughSubject<[Int], Never>()
subject
.flatMap { $0.publisher }
.map { $0 * 10 }
.collect()
.sink {
print($0) // Never called
}
.store(in: &storage)
subject.send([1, 2, 3, 4, 5])
【问题讨论】: