取消请求 Alamofire [英] Cancel a request Alamofire

查看:38
本文介绍了取消请求 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斯威夫特 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 - 首先获取请求:

1 - First get the request:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆