我必须创建一个应用程序来恢复 API 中的数据,为此我在请求中使用了 NSURLSession.sharedSession
和 dataTaskWithRequest
。
我设法恢复了所有信息,但我不明白为什么最后调用 dataTaskWithRequest
。
func my_connection(login: NSString, password: NSString) -> Void {
let request: NSMutableURLRequest = create_request(login, password: password)
let session = NSURLSession.sharedSession()
print("test1")
let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) -> Void in
if (data == nil) {
NSLog("Error Connection")
}
print("test2")
let res = response as! NSHTTPURLResponse!
if (my_code_HTTP(res.statusCode) == 0) {
var jsonData:NSDictionary = NSDictionary()
do {
jsonData = try NSJSONSerialization.JSONObjectWithData(data!,options:NSJSONReadingOptions.MutableContainers) as! NSDictionary
extract_data_projets(jsonData)
extract_data_activity(jsonData)
extract_data_history(jsonData)
display_board()
}
catch {
NSLog("Error")
}
my_connection_user()
my_connection_notes()
}
})
print("test3")
task.resume()
print("test4")
}
这是我编译后得到的:
test1
test3
test4
test2
最佳答案
是因为你在做异步请求。您的请求将在最少执行。在 resume()
之后,但不是紧接着。您在 test3
之后执行 task()
,因此这会使您的异步请求持续到最后。如果您在 test3
之前执行此操作,并且如果您的请求非常快,它可能会在 test4
之前完成,但您永远不会知道。
关于ios - 为什么最后调用 DataTaskWithRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768354/