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でしたが、
を持っている
フォローthisチュートリアルあなたは非同期要求の順序を保証することはできません、あなたはリクエストが帰ってきた後に何をすべきかを取り扱い、あなたのロジックを行う必要があります。 – WeiJay
注文が重要な場合は、リクエストを順次送信するか、すべてのリクエストが完了した後にレスポンスを調整する – Paulw11
完了する注文を保証する唯一の方法は、最初のリクエストが完了するまで2番目のリクエストを行わないことです(これは本当に愚かな方法ですこの問題を解決するために)。 Wei Jayは正しいです。回答が来る順序に依存しないコードを記述する必要があります。しかし、それ以上の文脈はなく、その問題を解決することはできません。しかし、もう一度、今度は、あなたが何らかの順序で来るように扱う必要があることを指摘したので、おそらくそれを理解することもできます。 – Rob