Je viens d'un arrière-plan C# et voudrais mettre en œuvre en attente de fonctionnalité dans mon application Swift. J'ai atteint les résultats souhaités, mais j'ai dû utiliser un sémaphore dont je ne suis pas sûr que ce soit une bonne pratique. J'ai une fonction avec une requête alamo qui retourne un JSON avec une valeur de succès et si je comprends bien, cette fonction de requête est asynchrone avec un gestionnaire d'achèvement. Le gestionnaire se déclenche une fois la requête terminée. Le problème renvoie la valeur de succès de cette opération. Voici un exemple de code psuedo ce que je fais:"attendre" les résultats des tâches dans 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
}
Y at-il une « meilleure » façon d'atteindre mon objectif? Je suis nouveau à Swift et ses constructions asynchrones.
Un vote négatif? Sérieusement? – Seapoe