私は非同期APIに関する質問があります。
レスポンスを得るにはasync apiを待つことができますか?
私の場合、「isAgreen == true」と表示し、alertcontrollerをユーザーに表示します。
私はそれを行う方法を知らない。
ありがとうございます。
AlamofireとRxswiftを使用して非同期API応答を待つ方法
Class UserModel:NSObject {
var isAgree:Bool?
func put(_ params:[String:Any], _ callback: @escaping (JSON) -> Void){
let url = self.customUrl(params)
self.requestJSON(.put, url: url, params: params, callback: { json in
callback(json)
})
}
func getStatus() {
API.getUserStatus.put(params, { json in
guard json["status"] != "error" else {
if json["error"] == "friend agree" {
self.isAgreen = true
self.friendship.updateDatabase()
}
return
}
})
}
}
class FriendInfoViewController: UIViewController {
func buttonClick(sender:UIButton) {
let user:UserModel = UserModel()
user.getStatus()
if user.isAgreen == true{ //Wait to response and show alertViewController
let alert = showAlert(title: "Warning", message: "Test", style: .alert)
self.present(alert, animated: true, completion: nil)
}
}
}
RXSwiftを使用しなくても、待つことはありません。非同期コードが完了ハンドラを呼び出させるようにします。 RXSwiftは全てイベント駆動型です。一部のオブジェクトは、ネットワーク操作が完了し、そのイベントを処理するときにイベントを送出する必要があります。 – Paulw11
あなたは問題を解決しましたか? – Jaydeep