在我的应用程序中,用户可以按照自己喜欢的顺序列出项目列表。数据库模式如下所示:
Items
+ Id : int
+ Name : string
+ Order : int
因此,当用户按顺序放置内容时,它会相应地设置Order
字段,以便稍后对其进行排序。大。
现在,我想进行排序ajax-y,这样用户可以按顺序拖放项目(并使用向上/向下箭头),它只会自动保存所有内容。 (如果您熟悉Netflix,他们会做类似的事情。)
我遇到的问题是,为了在用户进行更改时保持用户的更改,我每次执行操作时都需要进行AJAX调用。如果用户将项目从位置10移动到位置1,则意味着我必须在该小ajax调用中更新10条记录。同时,用户可能已经排队了另外3个AJAX调用来更新其他记录。
这似乎效率低下,并且可能容易出错(由于竞争条件等原因,如果AJAX调用需要很长时间。)我应该担心这个吗?有没有更有效的方法来做到这一点?如果它有所不同,我预计大多数用户将有少于5个项目进行排序。
答案 0 :(得分:0)
由于Javascript无法同步代码,我同意很难实现可以避免竞争条件的代码,尽管我确实在Javascript中实现了Mutex this article。
但是,我个人认为,不是选择可能导致竞争条件的选项,而是选择以下选项之一:
我会倾向于后者。显然,在这两种情况下,您都希望向用户提供一些视觉提示,表明他们有未保存的更改(例如,更改项目的背景颜色)。如果您使用其中任何一个选项(例如在Gmail中,当您正在撰写的电子邮件中有未保存的更改时),您很可能希望实施一些确保用户希望保留未保存更改页面的内容。