處理不按順序的Ajax請求(最好使用jQuery)的最佳方式是什麼?如何處理不按順序的Ajax請求?
例如,每當字段更改時,都會從用戶的瀏覽器發送Ajax請求。用戶可能會將dog_name
更改爲「蓬鬆」,但片刻後,她將其更改爲「Spot」。第一個請求由於某種原因而被延遲,因此第二次請求在第二次之後到達服務器,並且她的狗最終被稱爲「蓬鬆」而不是「Spot」。
我可以沿着每個請求傳遞客戶端時間戳,並讓服務器將其作爲每個Dog
記錄的一部分進行跟蹤,並忽略先前請求更改相同的字段(但只有當差異小於5分鐘,以防用戶改變機器上的時間)。
這種方法是否足夠健壯,還是有更好的,更標準化的方法?
編輯:
馬特取得了他的評論大點。序列化請求以更改同一個字段會好得多,那麼是否存在實現Ajax請求隊列的標準方式?
編輯#2
在迴應@ cherouvim的評論,我不認爲我有鎖的形式。該字段會更改以反映用戶的更改,將更改請求放入隊列中。如果更改相同字段的請求正在隊列中等待,請刪除該舊請求。 2件事我仍然必須解決:
將請求放入隊列是一個異步任務。我可以讓來自上一個Ajax請求的回調處理程序發送隊列中的下一個請求。 Javascript代碼不是多線程的(或者...是不是?)
如果請求失敗,我需要用戶界面來反映上一次成功請求的狀態。因此,如果用戶將狗的名稱更改爲「Spot」並且Ajax請求失敗,則該字段必須設置回「Fluffy」(成功提交的最後一個值)。
我缺少什麼問題?
簡單:不允許多個同時請求相同的字段。如果更改發生得很快,則將它們排隊。 – 2010-12-04 18:07:54
@Matt Ball:你如何「鎖定」客戶端的整個display-form-push-change對話?這不是一個請求/響應週期,而是兩個。 – cherouvim 2010-12-04 18:12:34