当所有 alamofire 请求完成时做一些事情

Posted

技术标签:

【中文标题】当所有 alamofire 请求完成时做一些事情【英文标题】:Do something when all alamofire requests are finished 【发布时间】:2017-04-03 15:33:50 【问题描述】:

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

如果你知道你有多少个 url(你知道),只需记录你到达完成处理程序的频率 - 像这样。

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
                
            
        
    

【讨论】:

以上是关于当所有 alamofire 请求完成时做一些事情的主要内容,如果未能解决你的问题,请参考以下文章

当音源播放 2 分钟时做一些事情

PHP Javascript?当用户关闭页面或浏览器时做一些事情[重复]

按下 UITableViewCell 时做一些事情

强制 Alamofire 在主线程上做所有事情?

Swift Alamofire 如何处理来自循环的所有请求

如何在退出 Qt 应用程序时做一些事情