0

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

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

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

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

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

4

2 回答 2

1

有几种方法可以解决这个问题,这里有两种:

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

  2. 使用 Promises 在第一个请求被响应之前延迟第二个请求,jquery 内置了一个 promise/deferred 机制,但您也可以使用第 3 方,例如Qwhen

于 2013-08-02T12:18:22.240 回答
1

如果您能承受延迟,一种简单的方法是将async选项设置为何false时调用您正在调用的任何方法,从而导致 Backbone.sync。例如,在适当的模型中,只需覆盖默认sync方法以包含附加选项。

于 2013-08-02T19:48:23.543 回答