swift - 如何组合多个 SignalProducers?

标签 swift reactive-cocoa

假设我在数组中有一堆 SignalProducer:

[SignalProducer<Car, NSError>]

我如何将它们组合起来得到一个 SignalProducer 等待所有这些并获得所有 Car

SignalProducer<[Car], NSError>

用例:向端点 http://cardatabase.com/:car_id 发起网络请求,获取一堆汽车 ID,从而获得多个 Car 对象。问题是 URLSession 函数一次只能为一个 Car 获取一个 SignalProducer。问题是如何将它们中的许多组合起来。

(编辑:哎呀,这让我想起了很多 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/

相关文章:

ios - ColorSense-For-XCode 插件在 swift 代码中不起作用

objective-c - 拆分 RACSignal 以消除状态

reactive-cocoa - RAC() 和 .rac_command 不能一起工作

ios - 为什么信号在 ReactiveCocoa 中被调用两次?

iOS UICircularProgressRing 径向渐变

swift - ivar_getTypeEncoding swift 返回 ""

ios - Prefix.pch ReactiveCocoa/RACEXTScope.h 文件未找到错误

objective-c - 如何使用 ReactiveCocoa 简化我的嵌套 for 循环?

xcode - swift "Start Game Menu"

ios - Spritekit Swift 游戏菜单放大屏幕