我来自C#背景,希望在我的Swift应用程序中实现等待功能。我已经达到了我想要的结果,但是我不得不使用信号量,我不确定这是一种好的做法。我有一个函数与alamo请求,返回一个JSON的成功值,据我所知,请求函数是一个完成处理程序异步。处理程序在请求完成后触发。问题是从该操作返回成功值。下面是我正在做的一个伪代码示例:“等待”Swift中的任务结果
func AlamoTest() -> Bool{
var success = false
//Do some things...
//...
//Signal from async code
let semaphore = DispatchSemaphore(value: 0)
Alamofire.request("blah blah blah", method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON { response in {
success = response["success"]
if(success){
//Do some more things
}
semaphore.signal() //Signal async code is done
}
//Wait until async code done to get result
semaphore.wait(timeout: DispatchTime.distantFuture)
return success
}
有没有一种“更好”的方式来实现我的目标?我是Swift及其异步构造的新手。
反对吗?真的吗? – Seapoe