我有一个使用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