【发布时间】:2015-08-05 22:29:57
【问题描述】:
我在一个循环中发出几个 NSURLSession 请求。我想以与创建任务相同的顺序存储响应的结果。但由于完成处理程序在单独的线程中运行,有时会发生对第二个任务的响应在对第一个任务的响应之前收到。
如何确保我得到响应的顺序与任务开始的顺序相同?
var recivedData = [String]()
for index in 0 ... urlsAsString.count-1 {
let myUrl = NSURL(string: urlsAsString[index])
var request = NSMutableURLRequest(URL: myUrl!)
// here I also set additional parameters (HTTPMethod, ...)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
responseData, response, error in
// here I handle the response
let result = ...
dispatch_async(dispatch_get_main_queue()) {
self.recivedData.append("\(result)") // save the result to array
}
}
task.resume()
}
【问题讨论】: