我有一個使用Alamofire進行URL請求的iOS應用程序。當他們之間的時間很少時,我有時會發現請求按錯誤順序到達。這與我所瞭解的異步請求的性質有關。有什麼方法可以保證請求的正確順序嗎?我一直認爲你可以等待每個請求完成,因爲你有一個完成處理程序,或者你可以在服務器端處理每個請求的時間戳,以便服務器可以放棄具有較低時間戳的請求。我不知道什麼是最好的解決方案。如何保證異步請求中的正確順序
我迄今爲止代碼:
Alamofire.request(
defaults.string(forKey: "APIurl")! + path,
method: httpMethod,
parameters: parameters,
encoding: JSONEncoding.default,
headers: headers).responseJSON
{ response in
// Check if the request was successful
var success = false
if (response.result.isSuccess) {
let statusCode = response.response!.statusCode
if (statusCode == 200) {
success = true
} else {
showAlert("COULD_NOT_COMPLETE_TASK_TITLE", message: "TRY_AGAIN_LATER")
}
}
}
我用滑塊改變所以在我的情況下,請求的順序是至關重要的0和100之間的值。比方說,我將滑塊從50更改爲60.使用異步請求時,它有時會先執行60次然後執行50.這是一個問題,因爲它以這種方式發送到我的API並將最新值(在本例中爲50)保存在數據庫中儘管我的期望值是60.
你不能保證異步請求的順序,你必須做你的邏輯來處理後做什麼的要求又回來了。 – WeiJay
如果訂單很重要,那麼可以順序發送請求或在完成所有請求後協調響應 – Paulw11
確保訂單完成的唯一方法是在第一個請求完成之前不要發出第二個請求(這是一個非常愚蠢的方法解決問題)。 Wei Jay是對的,你應該編寫不依賴於響應進來的順序的代碼。儘管沒有更多的上下文,但我們無法幫助你解決這個問題。但是,再一次,既然我們已經指出,你需要按照他們可能的順序來處理它們,你也可以把它弄清楚。 – Rob