如何取消Alamofire的共享经理中的所有请求

时间:2014-12-15 14:30:43

标签: alamofire

如何取消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])
    }
}

可以吗?

3 个答案:

答案 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() 创建的所有当前正在运行的请求。