如何处理异步URLRequest完成?

时间:2018-03-19 17:52:17

标签: swift nsurlsession urlrequest

我尝试在func中创建请求,并在调用func并返回responсejson之后。 但是因为请求是在func返回任何数据后到达的异步响应。

处理请求如何完成?

2 个答案:

答案 0 :(得分:0)

将闭包传递给您的函数,并使用URL请求的结果调用该闭包。

答案 1 :(得分:0)

你已经要求代码,所以我给你一些代码片段。请根据您的要求进行修改。这些代码使用的是Alamofire,但主要是你需要知道如何处理回调中的响应。

   func requestYourApi(_ requestParams:[String:AnyObject], callback:@escaping (Dictionary<String, Any>, Error?)-> Void)
{
    let parameters:Parameters = requestParams
    Alamofire.request("https:yourUrl", method: .post, parameters: parameters, encoding: JSONEncoding.prettyPrinted).responseJSON    { response in
        debugPrint("response: \(response)")

        switch response.result
        {
        case .success(let value):
            callback(value as! Dictionary, nil)
        case .failure(let error):
            callback([:], error)
        }
    }
}

并在需要时调用上述方法。您将收到responseObj中的回复和error中的错误。

     requestYourApi(requestParams as [String : AnyObject]) { (responseObj, error) in
        DispatchQueue.main.async
            {
                if responseObj.count != 0
                {
                  // Do something with your response

                }
        }
    }