【发布时间】:2021-12-14 20:38:52
【问题描述】:
我正在尝试将n 请求与Combine 链接起来。
假设我有 50 个用户,我需要为每个用户执行一个请求来获取用户数据。我知道使用flatMap 您可以将一个Publisher 结果传递给下一个。但这也适用于循环吗?
这是我获取用户的功能:
func fetchUser(for id: Int) -> AnyPublisher<User, Error> {
let url = "https://user.com/api/user/\(id)"
return URLSession.shared.dataTaskPublisher(for: url)
.mapError { $0 as Error }
.map { $0.data }
.decode(type: User.self, decoder: JSONDecoder())
.eraseToAnyPublisher()
}
所以基本上我需要另一个函数,它在这个fetchUser 上循环它并在一个结果数组中返回所有用户。这些请求不应同时运行,而应在前一个请求完成后启动一个。
【问题讨论】:
标签: swift combine urlsession