Como executar de forma síncrona duas funções com operações assíncronas no iOS usando o Swift
vamos propor esse cenário
um método com operações de rede assíncronas
func asyncMethodA() -> String?
{
result : String?
Alamofire.manager.request(.POST, "https://www.apiweb.com/apimethod", parameters: parameters, encoding:.JSON)
.response { (request, response, rawdata, error) in
if (response?.statusCode == 200)
{
//DO SOME HEAVY LIFTING
}
}
return result //string
}
outro método com operações de rede assíncronas
func asyncMethodB() -> String?
{
result : String?
Alamofire.manager.request(.POST, "https://www.yetanotherapiweb.com/apimethod", parameters: parameters, encoding:.JSON)
.response { (request, response, rawdata, error) in
if (response?.statusCode == 200)
{
//DO SOME HEAVY LIFTING
}
}
return result //string
}
um método no qual chamarei esses métodos A e B, para realizar algumas operações
func displayResult
{
1) let a = asyncMethodA()
2) let b = asyncMethodB()
3) println(a + b) //some chaotic stuff might happen :(
}
então a questão é como eu poderia fazer com que (2) esperasse (1) ser executado e (3) esperasse (2) e assim por diante (que 1,2 e 3 corressem sincronizados)?
(eu sei que uma resposta é encadear asyncMethodA e displayResult para asyncMethodB, mas quero saber se existe algum outro método)
obrigado!.