如何取消Alamofire共享管理器中的所有请求?
这是我的功能:
class func cancelAllRequests() {
Alamofire.Manager.sharedInstance.session.getTasksWithCompletionHandler { (dataTasks, uploadTasks, downloadTasks) in
self.each(dataTasks, function: self.cancel)
self.each(uploadTasks, function: self.cancel)
self.each(downloadTasks, function: self.cancel)
}
}
class func cancel(index: Int, element: AnyObject) {
if let task = element as? NSURLSessionTask {
task.cancel()
}
}
class func each<T>(array: [T], function: (Int, T) -> ()) {
for (index, t) in enumerate(array) {
function(index, array[index])
}
}
可以吗?
答案 0 :(得分:2)
使用NSURLSession
的{{1}}方法:
invalidateAndCancel
答案 1 :(得分:0)
适用于 Swift 4.0 和 Alamofire 4.5版
Alamofire.SessionManager.default.session.getAllTasks{ $0.forEach{ $0.cancel() } }
答案 2 :(得分:0)
对于 Alamofire 5.0+ 版本,SessionManager 已被 Session 取代。就用
Session.default.cancelAllRequests()
取消由 AF.request()
创建的所有当前正在运行的请求。