我有我的职责
func synch(cID: Int) -> AnyPublisher<Void, Error> {
summariesCache
.lastUpdateTimestamp(cID: cID)
.prefix(1)
.flatMap { self.sendRequest(withTimestamp: $0, cID: cID) }
.map { self.cache.uCache(with: $0.data) }
.eraseToAnyPublisher()
}
它接受一个参数cID: Int
。我想重构它,使这个函数接受参数cID: [Int]
,它是一个数组,并在每个数组的元素上执行所有操作,仍然返回AnyPublisher<Void, Error>
,就像在for循环中使用DispatchGroup进行异步操作和在all结束时完成一样。
1条答案
按热度按时间amrnrhlw1#
假设您的方法(
sendRequest
、uCache
等)都异步执行操作,您可以获得cID
的发布者,并将其平面Map到您当前拥有的发布者。如果您正在向Web服务器发送请求,在短时间内发送许多请求可能会导致服务器负载过重。如果可能,我建议您在一个请求中发送所有cID。