【发布时间】:2023-03-08 21:25:02
【问题描述】:
我来自 C# 背景,想在我的 Swift 应用程序中实现等待功能。我已经达到了我想要的结果,但我不得不使用一个信号量,我不确定这是一个好的做法。我有一个带有 alamo 请求的函数,它返回一个带有成功值的 JSON,据我所知,请求函数与完成处理程序是异步的。一旦请求完成,处理程序就会触发。问题是从该操作返回成功值。这是我正在做的一个伪代码示例:
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 及其异步结构的新手。
【问题讨论】:
-
投反对票?认真的吗?
标签: asynchronous swift3 async-await alamofire grand-central-dispatch