首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax竞赛条件

Ajax竞赛条件
EN

Software Engineering用户
提问于 2012-05-11 20:11:39
回答 3查看 5.9K关注 0票数 9

是否有处理Ajax竞争条件的模式或标准方法?以下面的例子为例。你有两张桌子。单击表1上的一行将删除DB中的数据,然后更新表2(该表将显示表1的所有行,减去单击的行)。

如果有人快速连续地单击一串行,您可能会看到一个场景,即表2没有对所有单击进行更新以处理计时/滞后问题。

有什么办法可以解决这个问题呢?我正在考虑使用一个可能的队列,但是这种类型的结果与异步执行队列的目的不同。但是,我仍然可以享受UI而不是锁定的好处。

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2012-05-11 20:20:33

只是一个想法,也许您可以为Ajax回调方法创建一个列表。您可以将实际的Ajax回调封装在将回调添加到列表中的一个插槽的方法中。

此列表以特定的顺序等待回调,并且只有在填充了top元素(您希望首先调用的回调)时才执行。

票数 8
EN

Software Engineering用户

发布于 2012-05-11 20:22:31

这不是比赛条件。

当两个异步线程之间的行为变为未定义时,将发生争用条件。您可以通过嵌套第一个调用的回调来解决这个问题。

票数 7
EN

Software Engineering用户

发布于 2012-05-14 07:51:11

一般来说,回调是处理异步任务的通用工具,实际上回调是在JavaScript中处理AJAX请求的机制。在回调的上下文中,甚至可以引用单击的行(如果在闭包中关闭)。您可以找到以下有用的文章:jQuery递延在jQuery中使用Deferreds

如果允许用户单击多个按钮,您应该想到的另一件事是,将启动多个请求。但是,不同的浏览器可以同时处理不同数量的AJAX请求:并发-ajax-xmlhttprequest-请求。为了克服这个问题,您应该实现一些基本的请求队列。

票数 6
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/148278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档