javascript - 是否可以独立于当前状态取消异步调用?

标签 javascript jquery ajax throttling cancellation

当我在文本字段小部件中输入文本时,我会发送请求,其中包含输入的每个字符,以从服务器获取匹配的数据。

当我打字速度非常快时,我会向服务器发送请求,这会导致我的控制卡住,我设法创建了限制机制,在其中设置客户端在发送请求之前应等待多少毫秒。这就需要设置任意常数ms来等待。更好的解决方案是在按下下一个按键时取消发送先前的请求。

是否可以独立于当前状态取消 AJAX 请求?如果是,如何实现?

最佳答案

调用XMLHttpRequest.abort()

参见:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/abort

您必须以某种方式跟踪您的请求,也许是在一个数组中。

requests = [];

xhr = new XMLHttpRequest(),
    method = "GET",
    url = "https://developer.mozilla.org/";

requests.push(xhr);

关于javascript - 是否可以独立于当前状态取消异步调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40640728/

相关文章:

javascript - jQuery 不触发单选按钮更改

php - 如何检查文件系统的权限?

javascript - 错误 : Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience

javascript - 使用 Rails 加载页面时的 jQuery Mobile 弹出窗口

javascript - 从数组中随机选择对象

jquery - 测试 jquery 是否已加载而不使用文档就绪事件

javascript - 0x800a01b6 - JavaScript 运行时错误 : Object doesn't support property or method 'appendTo'

javascript - 为什么 jquery $.ajax 会删除数据中的换行符而 $.get 不会?

javascript - 如何阻止 Keyup 事件触发两次

javascript - 为什么这会出现语法错误?