如何使用 Alamofire 等待 API 响应 [重复]

Posted

技术标签:

【中文标题】如何使用 Alamofire 等待 API 响应 [重复]【英文标题】:How to wait API response with Alamofire [duplicate] 【发布时间】:2021-03-22 14:53:39 【问题描述】:

如何使用 Alamofire 在 SwiftUI 中等待我的 API 响应?我已经尝试了一些完成处理但没有工作。

    private func loadData(completion : ()->()) 
        let myURL = makeURL()
        print("myURL=",myURL)
        
        AF.request(myURL, method: .get).responseJSON  (response) in
            if response.value != nil 
                let userJSON: JSON = JSON(response.value!)
                print("userJSON: ", userJSON)
                newName = userJSON["name"].stringValue
                image = userJSON["image"].stringValue.replacingOccurrences(of: "\\/\\/", with: "//")
                print("image = ", image)
                numShare = userJSON["numShares"].intValue.shorted()
                engagementRate = userJSON["engagementRate"].intValue.shorted()
                followers = userJSON["followers"].intValue.shorted()
                numLikes = userJSON["numLikes"].intValue.shorted()
                numViews = userJSON["numViews"].intValue.shorted()
                numVideos = userJSON["numVideos"].intValue.shorted()
                numComments = userJSON["numComments"].intValue.shorted()
                following = userJSON["following"].intValue.shorted()
                //update
             else 
                print("err, \(String(describing: response.error))")
            
        
        completion()
        print("ok")
    

我是这样称呼它的

Button("Show Insights") 

   self.loadData(completion: 
   showView = "NormalView"
   )

我看到我们也可以使用成功/失败案例,但我不知道该怎么做

【问题讨论】:

【参考方案1】:

completion() 行必须闭包内

AF.request(myURL, method: .get).responseJSON  (response) in

   ...

   completion()

并放弃SwiftyJSON 以支持Codable。 Alamofire 可以直接用Codable 解码JSON。

【讨论】:

以上是关于如何使用 Alamofire 等待 API 响应 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 RxSwift 和 alamofire 获得嵌套 api 调用的响应?

如何使用 RxSwift 和 Alamofire 库调用来自另一个 API 的响应的 API?

我应该如何使用 Alamofire 和 SwiftyJSON 解析来自 API 的 JSON 响应?

如何在 Swift 中解析来自 Alamofire API 的 JSON 响应?

使用 Alamofire 从 api 获得响应时的问题

使用 Alamofire 从 API 获取响应