У меня есть издатель, который принимает сетевой вызов и возвращает массив идентификаторов. Теперь мне нужно вызвать другой сетевой вызов для каждого идентификатора, чтобы получить все мои данные. И я хочу, чтобы конечный издатель имел получившийся объект.
Первый сетевой результат:
"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 и выполнения после того, как все они будут готовы. Есть ли еще способ объединения?
У Doe Combine есть концепция разделения одного потока на множество параллельных потоков и объединения потоков вместе?