【发布时间】:2020-02-28 16:25:42
【问题描述】:
我有一个发布者,它接受网络调用并返回一个 ID 数组。我现在需要为每个 ID 调用另一个网络调用来获取我的所有数据。我希望最终发布者拥有结果对象。
第一个网络结果:
"user": {
"id": 0,
"items": [1, 2, 3, 4, 5]
}
最终对象:
struct User {
let id: Int
let items: [Item]
... other fields ...
}
struct Item {
let id: Int
... other fields ...
}
处理多个网络调用:
userPublisher.flatMap { user in
let itemIDs = user.items
return Future<[Item], Never>() { fulfill in
... OperationQueue of network requests ...
}
}
我想并行执行网络请求,因为它们不相互依赖。我不确定 Future 是否就在这里,但我想我会有代码来做一个 DispatchGroup 或 OperationQueue 并在它们都完成后完成。有没有更多的组合方式来做到这一点?
Combine 是否有将一个流拆分为多个并行流并将这些流连接在一起的概念?
【问题讨论】: