Alamofire 等待完成
Posted
技术标签:
【中文标题】Alamofire 等待完成【英文标题】:Alamofire Wait for completion 【发布时间】:2019-09-10 12:40:01 【问题描述】:我有一个返回布尔值(默认为 false)并使用 Alamofire 调用返回字符串的 API 的方法。但是,由于 API 请求是异步的,因此该方法总是在异步请求完成之前完成并返回 false。 我怎样才能等到 API 调用“实际上”完成才能返回正确的结果?
我尝试将 return 语句放在 .success 和 .failure 块中,但这会导致错误
func validateCredentials() -> Bool
var apiResult = false
Alamofire.request("http://myURL?pUser=\(usernameTextField.text!)&pPwd=\(passwordTextField.text!)&pCheckIt=y")
.responseString
response in
switch response.result
case .success:
apiResult = true
case .failure:
apiResult = false
ProgressHUD.show("Please wait...")
return apiResult . <==== Always return false
【问题讨论】:
Returning data from async call in Swift function的可能重复 【参考方案1】:您需要像下面这样放置转义完成块。
func validateCredentials(completion:@escaping(Bool) -> Void)
ProgressHUD.show("Please wait...")
Alamofire.request("http://myURL?pUser=\(usernameTextField.text!)&pPwd=\(passwordTextField.text!)&pCheckIt=y")
.responseString
ProgressHUD.hide()
response in
switch response.result
case .success:
completion(true)
case .failure:
completion(false)
【讨论】:
以上是关于Alamofire 等待完成的主要内容,如果未能解决你的问题,请参考以下文章
在 Alamofire 中,等待一组调用完成的正确方法是啥?