问题
How to cancel all requests in Alamofire's shared manager?
This is my function:
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])
}
}
Can it works?
回答1:
Use NSURLSession
's invalidateAndCancel
method:
manager.session.invalidateAndCancel
回答2:
This is for Swift 4.0 and Alamofire Version 4.5
Alamofire.SessionManager.default.session.getAllTasks{ $0.forEach{ $0.cancel() } }
来源:https://stackoverflow.com/questions/27486326/how-to-cancel-all-requests-in-alamofires-shared-manager