我有一个url数组,我想为该数组中的每个url发出alamofire请求:
func getData(completion: @scaping(_success: Bool) -> Void) {
for url in self.myArray {
Alamofire.request(url).responseImage { response in
if let image = response.result.value {
print(image)
completion(true)
}
}
}
}
问题是我无法知道所有请求何时完成,可能是因为for
循环。甚至使用完成处理程序。
如果我尝试在getData上取得成功,有些请求还没有完成。
我想在所有请求完成后做一些事情,比如更新tableView
答案 0 :(得分:0)
如果你知道你有多少网址(你做了),只要记住你到达完成处理程序的频率 - 就像这样。
func getData(completion: @scaping(_success: Bool) -> Void) {
var urlCounter = self.myArray.count
for url in self.myArray {
Alamofire.request(url).responseImage { response in
if let image = response.result.value {
print(image)
completion(true)
urlCounter -= 1
if urlCounter == 0
{
// everything finished - do completion stuff
}
}
}
}
}