使用Alamofire的Http请求

时间:2016-03-31 08:56:34

标签: ios swift alamofire

我正在使用Alamofire在我的应用中发送HTTP请求。我正在使用TabBarViewController,在第一个视图的ViewDidLoad中,我发送了一个请求。同样在ViewWillDisappear中,我发送另一个请求。但是,当我更改标签时,我发现它的行为意外。

func sendHttpCommand(parameter: NSDictionary) {
    Alamofire.request(.GET, URL, parameters: (parameter as! [String: AnyObject]))
             .response {
                 request, response, data, error in
                 print(request)
             }
}

viewDidLoad() {
    let dict: NSDictionary = ["value": 0]
    sendHttpCommand(dict)
}

viewWillDisappear(animated: Bool) {
    let dict: NSDictionary = ["value": 1]
    sendHttpCommand(dict)
}

当我切换标签时,在正常情况中,我的控制台将打印出来

Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})

但是,当我快速切换标签 时,我的控制台会打印出来

Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

alamofire请求执行异步。

请阅读此处以了解asyncs和同步: Difference between dispatch_async and dispatch_sync on serial queue?

您可以在更改标签时取消您的alamofire请求,但请求未完成。为此,您需要Alamofire Manager。