我需要向我的auth API发出POST请求,以在用户登录时检索Java Web令牌,但是由于Alamofire请求是异步的,所以我不知道如何迅速实现完成处理程序或Promise。
我制作了一个函数,每次用户发送凭据时都会调用它,它具有3个参数(版本(专业版,专业版,精简版,电子邮件,密码),它在API上发布并检索带有令牌的JSON,然后我得到使用SwiftyJSON将该令牌数据保存为字符串,我的问题是我不太了解完成处理程序或Promise的工作方式,因此我的数据丢失了,因为Alamofire异步运行并且该函数返回了存储在令牌var中的空值在检索,解析并保存JSON之前,因此始终返回空字符串。
这是我函数的代码:
public func AlamoToken(version: Bool, username: String, password:
String)-> String
{
var token = String()
let apiRouteSelection = DefineVersion(version: version)
let parameters: Parameters =
["Email": username,
"Password": password]
Alamofire.request(apiRouteSelection, method: .post, parameters: parameters).responseJSON { response in
let json = JSON(response.result.value as Any)
print ((json)) //Here i successfully get the JSON doc
token = json["token"].string!
print (("The token is: ", token)) //it prints token as expected
}
print((token)) //prints ""
return token
}
我认为我需要实现Promise或完成处理程序,但是我尝试过的所有方法都无法正常工作,我还具有PromiseKit,因此也可以正常工作,但我不知道:(
编辑:正如我在答复中所述,这是不可重复的,另一个问题甚至没有使用AlamoFire或PromiseKit,请重新提交。