javascript - 使用 jQuery AJAX 调用防止 "race conditions"

标签 javascript jquery race-condition

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

最佳答案

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

例子: 值为 3 的 ajax 请求已完成, 输入框中的当前值 = "hou",因为 hou.length == 3 ,匹配正确,可以处理数据。

关于javascript - 使用 jQuery AJAX 调用防止 "race conditions",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4986564/

相关文章:

C多线程程序行为解释

activerecord - DelayedJob中断可验证ActiveRecord中的唯一约束

javascript - 无法管理 Reactjs 上未填写的字段

javascript - --React 在被新内容填充时会更新包含的 div 的大小

javascript - 使用 jQuery 从 html 元素传入参数

javascript - 使用 jQuery 附加功能通过淡入淡出过渡来交换元素

MSBuild - 尝试构建项目引用时出现竞争条件

javascript - 字符串用句号替换多个字符 - Javascript

javascript - 无限滚动到页面底部

javascript - json响应,读取数据