同时处理多个 API
Handle Multiple APIs simultaneously
我想同时呼叫两个 api。情况是,当我得到两个 api 的成功响应时,则只应调用第三个 api。在这里,我不会使用任何标志或变量来检查 api 是否都成功。请建议是否有任何方法可以做到这一点。
您可以使用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")
}
您可以使用 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
}
我想同时呼叫两个 api。情况是,当我得到两个 api 的成功响应时,则只应调用第三个 api。在这里,我不会使用任何标志或变量来检查 api 是否都成功。请建议是否有任何方法可以做到这一点。
您可以使用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")
}
您可以使用 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
}