我來自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