同时处理多个 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

}