在我的应用程序中,我有一个任务,用户将在其中输入起始日期和截止日期,然后 url 将获取数据。每个 URL 将从服务器返回大尺寸的 JSON
字符串。
当用户输入较大的日期间隔导致服务器挂起时,就会出现问题。在应用程序的 android 版本中,我使用 AsyncTask
来完成此操作。如果用户输入较大的日期间隔,我会将请求分成多个。我使用 for 循环获取每天的数据,并在每天任务完成后在 onProgressUpdate
中发布进度。
在 swift 中,我还需要在 for 循环中使用多个数据任务并发布结果。
for i in 0 ..< dates.count {
// Getting response from server //
let response = getResponse(imei: sImei, date: dates[i])
parseResponse(response)
}
这就是我计划这样做的方式。但不知道如何实现。
我看到了一些使用 DispatchGroup
的建议。我对此不熟悉。所以请指导我完成我的任务。
注意:在单个 dataTask 中提供较大的日期间隔会阻塞我的服务器。因为,它是一个低端服务器。所以我必须查询各个日期的数据并将它们组合起来。
最佳答案
使用递归:最初 i = 0 。
func callApi( i : Int){
if(dates.count > i){
// After Getting response from server //
self.callApi(i: i + 1)
}
}
关于ios - 在 for 循环中运行多个 URLRequest,先完成后执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46175266/