我尝试在func中创建请求,并在调用func并返回responсejson之后。 但是因为请求是在func返回任何数据后到达的异步响应。
处理请求如何完成?
答案 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
}
}
}