2016-08-01 123 views
0

我是Alamofire的新手,對我來說邏輯有點困惑。 我懷疑Alamofire是否總是隻在請求觸發後才添加完成處理程序。 例如,以下是Alamofire Github的使用示例。Alamofire網絡請求在添加完成塊之前觸發?

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"]) 
    .responseJSON { response in 
     print(response.request) // original URL request 
     print(response.response) // URL response 
     print(response.data)  // server data 
     print(response.result) // result of response serialization 

     if let JSON = response.result.value { 
      print("JSON: \(JSON)") 
     } 
    } 

.request(.GET...方法中,請求本身被恢復並返回。在此之後,返回的請求然後調用.responseJSON(...方法將完成調用添加回某個隊列。由於請求已經被觸發,現在啓動回撥模塊是否太晚了?通常情況下,我們總是在我們完成設置後才發出請求,不是嗎?

但是,在查爾斯的監督下,我發現只有在.responseJSON方法返回後才發送Alamofire請求。

那麼,請告訴我我是如何誤解Alamofire的邏輯的。 謝謝!

+0

這是在jquery成功登錄 –

回答

0

直到響應返回,完成處理程序纔有用。當響應返回時,Alamofire自動調用處理程序。如果在響應返回後添加了處理程序,Alamofire會立即調用處理程序(這就是爲什麼您可以隨時添加多個處理程序,它們都將被調用)。

0

你如何嘗試這樣?

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"]) 
     .responseJSON { response in 
      print(response.request) // original URL request 
      print(response.response) // URL response 
      print(response.data)  // server data 
      print(response.result) // result of response serialization 

      let result = response.result 
      switch result { 
       case .Success(let data): 
        let json = JSON(data) 
        completed(JSONObject: json, error: nil) 
        break 
       case .Failure(let error): 
         completed(JSONObject: nil, error: error) 
         break 
       } 
     } 
相關問題