javascript - 有关更改排队/后端数据库更新的文本

标签 javascript sql-server asp.net-mvc

我有一个 JavaScript 表单,用于保存对 <textarea> 所做的更改通过ajax调用到我的服务器。我希望让事情变得简单,并已连接 changekeyup事件并相应地触发对我的服务器的调用。

当多个重叠调用开始导致我的数据库出现乐观并发问题时,就会出现问题。 (带有 RowVersions 的 SQL 2008)。

  1. 有没有什么办法可以让 ajax 调用排队,这样我就不会同时进行多个调用?
  2. 更好的方法是使用计时器而不是更改事件。每2秒更新一次?确保最终更新onBlur
  3. 这是否最好在服务器上处理,因为多个客户端(虽然不太可能)仍然可能导致相同的问题。那会是什么样子?

最佳答案

减少调用次数的一种方法是延迟 ajax 调用几秒钟,看看用户是否会继续输入。你的change/keyup监听器的主体中会有类似这样的内容:

if(timeoutId){ 
    // prevent last timeout from sending the ajax call
    clearTimeout(timeoutId);
    timeoutId = 0;
}
timeoutId = setTimeout(sendAjaxToSaveState,delayInMilliseconds);

您还应该发送一个关于模糊的 ajax 调用,就像您在第二个选项中提到的那样。

关于javascript - 有关更改排队/后端数据库更新的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14697280/

相关文章:

javascript - 如何将对象迭代到对象数组

javascript - 等待 ajax 脚本完成然后显示页面

sql-server - 如何将SSIS包部署到Azure?

sql-server - 在 Azure SQL 上创建的每个新数据库上创建一个已知登录名的用户?

c# - NLog:从 nlog.config 切换到编程配置

javascript - 在数据表中使用 column().visible() 隐藏列不起作用

javascript - 当 DOM 完全加载 ember 时执行一些操作

sql-server - 根据状态从表中获取最大和最小日期的查询速度较慢

javascript - 循环内的 CheckBoxFor——在客户端,发现更改了哪个框,以及它是选中还是未选中

c# - 在 ASP.NET MVC3 中验证表单时,有什么方法可以忽略某些属性(在 POCO 上)?