骨干同步请求序列

时间:2013-08-02 11:47:43

标签: rest backbone.js

我有一个与RESTful PHP服务器对话的Backbone Web应用程序。对于PUT和POST,请求到达服务器的顺序很重要,对于GET而言,响应到达客户端的顺序很重要。

Web应用程序不需要由多个用户同时使用,但可能发生的是用户非常快地更改其名称两次。然后,服务器处理PUT /name/AnnPUT /name/Bea的顺序决定了名称是设置为Ann还是Bea。

Backbone.SafesyncBackbone.Sync.AjaxQueue是试图解决此问题的两个库。 Safesync不能解决GET问题吗? Sync.AjaxQueue已过时,但可能是实现自定义排队同步功能的灵感。使同步同步可以解决问题。如果仅在收到上一个响应后发送请求,则一次只处理一个请求。

关于如何进行的任何建议?

顺便说一句:我不认为使用PATCH请求会解决任何问题,因为在我的示例中,相同的属性会更改两次。

2 个答案:

答案 0 :(得分:1)

有几种解决方法,这里有两个:

  1. 为所有请求添加时间戳,将其存储在数据库中作为"修改"并让服务器检查新请求的时间戳是否晚于数据库中的时间戳才能生效

  2. 使用Promise延迟第二个请求在第一个请求被响应之前,a promise/deferred mechanism built into jquery,但你也可以使用第三方请求,例如{{3} }或Q

答案 1 :(得分:1)

如果你能负担得起延迟,一个简单的方法就是当你调用导致Backbone.sync的任何方法时,将async选项设置为false。例如,在适当的模型中,只需覆盖默认的sync方法以包含其他选项。