技术解析

JS 关于外部终止遍历,然后开始新遍历
0
2021-08-31 23:08:36
idczone

直接上源码 $(document).on("click",".Ajax", function() { $("#list .Title").each(function() { var id = $(this).data("id"); $.ajax({ type: "get", dataType: "json", url: "http://xx.com/xx.php?id="+id, success: function(data) { } }) }) }) 在面页上点击 Ajax 的时候,就会遍历列表去请求 ajax,因为 ajax 反应有点慢无论是同步还是异步还是需要点时间(根据 ajax 返回的内容去修改列表内容)。那么问题来了,当点击 Ajax 进行遍历列表之后,再次点击 Ajax 那么前一次没有执行完的遍历会继续执行,而新的遍历也会在执行,就会造成混乱。不能去隐藏 Ajax 这个按钮,因为是允许这样的操作的,现在主要想要解决,当点击 Ajax 之后,先终止前一次的遍历,然后开始新的遍历。


用 abort()啊
(() => {
let a = [];
$(document).on("click", ".Ajax", function () {
for (let o of a) {
o.abort();
}
a = [];
$(".Title").each(function () {
var id = $(this).data("id");
var ajax = $.ajax({
type: "get",
dataType: "json",
url: "http://xx.com/xx.php?id="+id,
success: function (data) {
console.log(data);
}
});
a.push(ajax);
})
})
})();

加个计数变量就行了


不过这个是在浏览器插件里面的,不是直接调用 AJAX,而是通过 chrome.extension.sendRequest 调用 background.js 的 AJAX 请求,这该如何处置?

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服