【发布时间】:2017-12-17 18:44:04
【问题描述】:
我对异步 api 有疑问。
我可以等待异步 api 得到响应吗?
就我而言,我希望在“isAgreen == true”时向用户显示警报控制器。
我不知道该怎么做。
谢谢。
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 就是关于事件驱动的。当网络操作完成时,某些对象应该发出一个事件,您将处理该事件。
-
你的问题解决了吗?
标签: ios swift asynchronous alamofire rx-swift