【发布时间】:2019-08-12 02:33:48
【问题描述】:
我想从 REST API 获取数据,为此,我需要首先获取一个 ID 数组 - 第一次调用。之后,我需要使用每个 ID 进行 API 调用。我不想使用completionHandlers,而是使用Combine。我从 dataTaskPublishers 开始,但我不确定如何将它们链接起来才能正常工作????
到目前为止,这是我的代码:
private func getIDs(for type: DataType) -> AnyPublisher<[ID], Error> {
guard let url = URL(string: "url")
else { fatalError("Wrong URL") }
return session.dataTaskPublisher(for: url)
.receive(on: RunLoop.main)
.map { $0.data }
.decode(type: [ID].self, decoder: decoder)
.eraseToAnyPublisher()
}
private func getData(with id: ID) -> AnyPublisher<MyData, Error> {
guard let url = URL(string: "url_with_id")
else { fatalError("Wrong URL") }
return session.dataTaskPublisher(for: url)
.receive(on: RunLoop.main)
.map { $0.data }
.decode(type: MyData.self, decoder: decoder)
.eraseToAnyPublisher()
}
我不确定如何连接它们以获得可分配给我的状态变量的东西 - MyData 数组。
【问题讨论】:
-
其实我认为使用
zip是最简单的,除非我误解了这个问题。