我有一个for-in
循环,它为循环中的每个项目发出网络请求。我已经完成了挖掘工作并且尚未找到可行的解决方案。在执行下一个函数之前,我怎么能等到所有请求都被返回?
我不能在for
循环之后调用该函数,因为在调用函数之前不会返回任何内容。我已经尝试了dispatch_group_enter/leave()
但是在每次循环后都会调用它。我需要遍历整个循环,等待每个网络返回,然后触发下一个函数。
GCD仍然是我最好的选择吗?
for item in array {
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in
if error != nil {
print(error)
} else {
if let result = (try? NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as? NSArray {
if error == nil {
print(result)
}
}
}
}
task.resume()
}
// Call function here once I've printed every `result`.
答案 0 :(得分:2)
不是理想的解决方案,但您是否考虑过在每个块中调用另一个函数,并跟踪已完成的下载次数?因此,如果每次下载完成后调用以下函数,例如:
ServletContext