我想同时打电话给两个apis。情况是,当我得到两个apis的成功响应时,那么只应调用第三个api。在这里,我不会使用任何标志或变量来检查两个apis是否成功。请建议是否有任何方法可以做到这一点。
答案 0 :(得分:1)
您可以使用DispatchGroup
let group = DispatchGroup()
group.enter()
perform(request: first) {
group.leave()
}
group.enter()
perform(request: second) {
group.leave()
}
group.notify(queue: .main) {
print("both done")
}
答案 1 :(得分:0)
您可以使用Dispatch组创建一组任务
这里的例子
// First, we create a group to synchronize our tasks
let group = DispatchGroup()
// The 'enter' method increments the group's task count…
group.enter()
ApiRequest1.Data { data in
// …while the 'leave' methods decrements it
group.leave()
}
group.enter
ApiRequest2.Data { data in
group.leave()
}
// This closure will be called when the group's task count reaches 0
group.notify(queue: .main) { [weak self] in
}