尝试从网络调用中获取返回回复对象。该 session 是一个使用 star scream API 的类。我似乎无法让它发挥作用。它只打印出一组来自第一个 id 的结果。我在这里缺少什么?
let myGroup = DispatchGroup()
for i in 0 ..< marketIds.count {
myGroup.enter()
self.session.retrieve(withMethod: MarketKeys.key, withParameters: [MarketKeys.id: marketIds[i]], completion: { (results, error) in
print("results \n")
print(results!)
myGroup.leave()
})
}
myGroup.notify(queue:.main) {
print("Done")
}
最佳答案
这article为您提供简单 DispatchGroup
使用的快速引用指南。
一个例子:
let dispatchGroup = DispatchGroup()
dispatchGroup.enter()
longRunningFunction { dispatchGroup.leave() }
dispatchGroup.enter()
longRunningFunctionTwo { dispatchGroup.leave() }
dispatchGroup.notify(queue: .main) {
print("Both functions complete 👍")
}
通知函数在队列中的所有项目都已处理后被调用,并允许您对此做出相应的 react 。所以上面的例子会运行两个长时间运行的任务,然后会输出“两个函数都完成了👍”
关于ios - 调度组不为完成 block 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48323247/