同时处理多个API

时间:2018-05-04 07:54:40

标签: objective-c swift objective-c-blocks

我想同时打电话给两个apis。情况是,当我得到两个apis的成功响应时,那么只应调用第三个api。在这里,我不会使用任何标志或变量来检查两个apis是否成功。请建议是否有任何方法可以做到这一点。

2 个答案:

答案 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

}