所有alamofire请求完成后执行某些操作

时间:2017-04-03 15:33:51

标签: swift request alamofire

我有一个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

1 个答案:

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