假设我在数组中有一堆SignalProducer
:
[SignalProducer<Car, NSError>]
如何合并它们以获得一个等待所有它们并获得所有
SignalProducer
的Car
?SignalProducer<[Car], NSError>
用例:向网络端点
http://cardatabase.com/:car_id
发出网络请求以获取一堆汽车ID,从而获得多个Car
对象。问题在于URLSession
函数一次只能获取一个SignalProducer
的Car
。问题是如何将其中许多结合起来。(编辑:Yikes,这使我想起了Haskell中的许多
sequenceA
。我可以在ReactiveSwift中做类似的事情吗?) 最佳答案
这是一个如何使用flatten(_:)
和reduce(_:, _:)
进行此操作的示例。
let firstProducer = SignalProducer<Int, NoError>(value: 0)
let secondProducer = SignalProducer<Int, NoError>(value: 1)
let thirdProducer = SignalProducer<Int, NoError>(value: 2)
SignalProducer<SignalProducer<Int, NoError>, NoError>(values: [firstProducer, secondProducer, thirdProducer])
.flatten(.merge)
.reduce([]) { $0 + [$1] }
.startWithValues { print($0) } //prints "[0, 1, 2]"
关于swift - 如何组合多个SignalProducers?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40875370/