このシナリオを提案しましょう
非同期ネットワーク操作のメソッド
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
}
非同期ネットワーク操作による別の方法
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
}
いくつかの操作を行うために、メソッド A と B を呼び出すメソッド
func displayResult
{
1) let a = asyncMethodA()
2) let b = asyncMethodB()
3) println(a + b) //some chaotic stuff might happen :(
}
したがって、問題は、(2) (1) が実行されるのを待機し、(3) (2) が待機するなど (1、2、3 が同期して実行される) ようにする方法です。
(1つの答えは、asyncMethodAとdisplayResultをasyncMethodBにチェーンすることですが、他の方法があるかどうか知りたいです)
ありがとうございました!。