编程语言
首页 > 编程语言> > javascript – 使用jQuery AJAX调用防止“竞争条件”

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

作者:互联网

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

解决方法:

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

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

标签:javascript,jquery,race-condition
来源: https://codeday.me/bug/20190827/1737282.html