我向后端服务器发送请求,我需要知道正确的方式来通知我的主线程响应。我正在使用NSNotificationCenter执行此任务,但这有时不起作用,并且在工作时有一些延迟,因为当我正在调试时,我可以看到控制台何时打印结果,但几秒后才能看到相应的警报。当后台请求快速完成时通知我
这里是我的要求:
let request1 = NSMutableURLRequest(URL: NSURL(string: serverID)!)
request1.HTTPMethod = "GET"
for key in parameters.keys{
request1.addValue(parameters[key] as String!, forHTTPHeaderField: key)
}
let task = NSURLSession.sharedSession().dataTaskWithRequest(request1) {
data, response1, error in
if error != nil {
print("error=\(error)")
NSNotificationCenter.defaultCenter().postNotificationName("request1Error", object: self)
return
}
else {
let httpResponse = response1 as! NSHTTPURLResponse
let headers = httpResponse.allHeaderFields as NSDictionary
let sucess: AnyObject? = headers.objectForKey("UserId")
if (sucess != nil){
let value = headers.valueForKey("info") as! String
print("info: \(value)")
NSNotificationCenter.defaultCenter().postNotificationName("sucessRequest", object: self)
}
else{
NSNotificationCenter.defaultCenter().postNotificationName("requestError2", object: self)
}
}
}
task.resume()
我应该如何通知我的主线程的请求的结果?
呼叫调度异步和跨上主线程。有什么问题? – matt
我应该如何调用异步调度并进入主线程?问题是postNotification有时会失败,并且延迟运行观察者。 – DrCachetes
延迟是因为你没有做我刚才所说的。 – matt