consente di proporre questo scenarioCome eseguire sincronicamente due funzioni con le operazioni asincrone su iOS che utilizzano Swift
un metodo con le operazioni di rete asincrone
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
}
un altro metodo con le operazioni di rete asincrono
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
}
un metodo in cui chiamerò quei metodi A e B, per fare alcune operazioni
quindi la domanda è come potrei fare che (2) aspetti (1) di correre, e (3) attenda per (2) e così via (che 1,2 e 3 corrano sincronizzati)?
(So che una risposta è quella di catena asyncMethodA e displayResult in asyncMethodB, ma voglio sapere se c'è qualche altro metodo)
grazie !.
Sei consapevole che 'result' ritorno nelle funzioni asincrone viene eseguito * prima * i dati sono stati recuperati dalla rete? –
Non sono nemmeno sicuro di dove viene dichiarato 'result'. –
sì, non l'ho visto anche questo ... un altro problema haha, una possibile soluzione è usare una variabile globale e verificare se ha un valore diverso da zero, ma se si conosce una risposta per questa specifica istanza del problema, sarebbe molto apprezzato –