取消请求Alamofire [英] Cancel a request Alamofire
本文介绍了取消请求Alamofire的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在发送一个基于计时器触发的请求。但是,如果我按下后退按钮,该请求似乎仍然处于活动状态,并且响应反过来使应用程序崩溃。请提出一种取消请求的方法。
I am sending a request which is triggered based on timer. But if I press the back button the request still seems to be active and the response in turns crashes the app. Kindly suggest a way to cancel the request.
使用Xcode 8.2.1
Swift 3
Using Xcode 8.2.1 Swift 3
这是示例请求:
Alamofire.request(path!, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: createHeader()).responseJSON {
response in
switch response.result {
case .success(let data):
success(data as AnyObject?)
case .failure(let error) :
failure(error as NSError)
}
}
甚至尝试使viewDidDisappear上的计时器无效,但无济于事。
Even tried invalidating the timer on viewDidDisappear but to no help.
谢谢!
推荐答案
Alamofire 4 / Swift 3 / Xcode 8
您可以取消单个请求 >如下所示:
1-首先收到请求:
let request = Alamofire.SessionManager.default.request(path!, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: createHeader()).responseJSON { response in
switch response.result {
case .success(let data):
success(data as AnyObject?)
case .failure(let error) :
failure(error as NSError)
}
}
2-然后,在您的 viewDidDisappear 中,只需调用:
2 - Then, in your viewDidDisappear, just call:
request.cancel ()
您可以取消所有请求,如下所示:
You can cancel all requests as below:
Alamofire.SessionManager.default.session.getTasksWithCompletionHandler { (sessionDataTask, uploadData, downloadData) in
sessionDataTask.forEach { $0.cancel() }
uploadData.forEach { $0.cancel() }
downloadData.forEach { $0.cancel() }
}
这篇关于取消请求Alamofire的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文