是否有处理Ajax竞争条件的模式或标准方法?以下面的例子为例。你有两张桌子。单击表1上的一行将删除DB中的数据,然后更新表2(该表将显示表1的所有行,减去单击的行)。
如果有人快速连续地单击一串行,您可能会看到一个场景,即表2没有对所有单击进行更新以处理计时/滞后问题。
有什么办法可以解决这个问题呢?我正在考虑使用一个可能的队列,但是这种类型的结果与异步执行队列的目的不同。但是,我仍然可以享受UI而不是锁定的好处。
发布于 2012-05-11 20:20:33
只是一个想法,也许您可以为Ajax回调方法创建一个列表。您可以将实际的Ajax回调封装在将回调添加到列表中的一个插槽的方法中。
此列表以特定的顺序等待回调,并且只有在填充了top元素(您希望首先调用的回调)时才执行。
发布于 2012-05-11 20:22:31
这不是比赛条件。
当两个异步线程之间的行为变为未定义时,将发生争用条件。您可以通过嵌套第一个调用的回调来解决这个问题。
发布于 2012-05-14 07:51:11
一般来说,回调是处理异步任务的通用工具,实际上回调是在JavaScript中处理AJAX请求的机制。在回调的上下文中,甚至可以引用单击的行(如果在闭包中关闭)。您可以找到以下有用的文章:jQuery递延和在jQuery中使用Deferreds
如果允许用户单击多个按钮,您应该想到的另一件事是,将启动多个请求。但是,不同的浏览器可以同时处理不同数量的AJAX请求:并发-ajax-xmlhttprequest-请求。为了克服这个问题,您应该实现一些基本的请求队列。
https://softwareengineering.stackexchange.com/questions/148278
复制相似问题