2013-08-02 49 views
0

我有一個Backbone Web應用程序,它與RESTful PHP服務器交談。對於PUT和POST來說,請求到達服務器的順序很重要,GET對於響應到達客戶端的順序很重要。骨幹同步請求序列

Web應用程序不需要由多個用戶同時使用,但可能發生的是用戶更改名稱的速度非常快。然後,服務器處理PUT /name/AnnPUT /name/Bea的順序決定名稱是否設置爲Ann或Bea。

Backbone.SafesyncBackbone.Sync.AjaxQueue是試圖解決這個問題的兩個庫。 Safesync不能解決GET問題嗎? Sync.AjaxQueue已過時,但可以作爲實現自定義排隊同步功能的靈感。使同步同步將解決問題。如果僅在收到前一個響應後發送請求,則一次只處理一個請求。

有關如何進行的任何建議?

順便說一句:我不認爲使用PATCH請求會解決任何問題,因爲在我的例子中,相同的屬性被更改兩次。

回答

1

有解決這幾個方面,這裏有二:

  1. 時間戳在數據庫中添加的所有請求,存儲爲「修改」,並讓服務器檢查是否有新的請求的時間戳比數據庫中的要晚,以使其有效

  2. 使用承諾推遲第二個請求在第一個請求被響應之前,有a promise/deferred mechanism built into jquery,但您也可以使用第三方請求實例Qwhen

1

如果您可以承受延遲,那麼在您調用導致Backbone.sync的任何方法時,一個簡單的方法是將async選項設置爲false。例如,在適當的模型中,只需覆蓋默認的sync方法即可包含附加選項。