-4
當我發出以下網絡請求時,print語句似乎在異步之前觸發。請求已完成。我試圖只在異步請求完成後調用主線程。如何在異步請求後調用主線程
func getRating (articleID: String) {
let endPointURL = "http://www.smarttapp.com/DesktopModules/DnnSharp/DnnApiEndpoint/Api.ashx?method=GetRating"
let encodedarticleIDURL = endPointURL.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!
let myURL = URL(string: encodedarticleIDURL)
Alamofire.request(
myURL!,
parameters: ["articleID": articleID]
)
.responseData { response in
guard response.result.isSuccess else {
return
}
if let data = response.data, let myDataString = String(data: data, encoding: .utf8) {
print("MyDataString is: \(myDataString)")
let newRating = Double(myDataString)!
self.post.rating = newRating
print(newRating)
}
}
DispatchQueue.main.async {
print("Final value \(self.post.rating)")
self.networkingState = .finishedSearching
self.tableView.reloadData()
}
}