使用jQuery AJAX调用防止“竞争条件”

时间:2011-02-13 20:12:26

标签: javascript jquery race-condition

我目前正在学习一种有点模糊的外语,所以我创建了一个简单的网站(http://ianburris.com/armenian/),以便我可以轻松地查找我班级中使用的书中的单词。我注意到的一件事是,有时如果我输入类似“house”的内容,那么匹配“h”的单词的请求将在请求“ho”之后完成,因此“h”的结果将覆盖“ho”的结果”。如果您输入一个单词然后非常快地点击退格键,这一点尤为明显。清除完所有字符后,我的消息“输入一个英文单词”将弹出一秒钟,然后最后一个AJAX请求最终完成覆盖该消息。有没有办法基本上取消AJAX调用,还是应该包含一个时间戳,我可以用它来推断过时的结果?

1 个答案:

答案 0 :(得分:6)

维护一个变量来识别正在进行的ajax调用的订单号, 例如。 1个用于第一个呼叫,2个用于第二个呼叫,3个用于ajax呼叫第3个字母。 每当ajax请求完成时,检查输入框值的当前字符串长度。 如果匹配,则数据有效,将其写入您的页面,否则拒绝。

例如: 完成了值为3的ajax请求, 输入框中的当前值=“hou”,因为hou.length == 3,它是正确匹配,可以处理数据。