$.ajax({
url: vars.url,
type: "post",
data: r,
async: true,
processData: vars.process,
contentType: vars.contenttype,
beforeSend: function(){
if(vars.loadbar == 'true'){
setInterval(function () {
$.getJSON(domain + '/core/files/results.json', function (data) {
console.log(data);
})
}, 1000);
}
},
complete: function(){
clearInterval();
},
succes: function(data){
..................
}
})
因此,我试图在ajax调用完成后立即结束代码生成的无限循环。现在,它几乎每秒都会打电话到我的文件以获取结果,我希望在ajax调用完成后立即停止。
我不知道该如何处理,因为如果我将一个变量分配给setInterval
(无论是在beforeSend
本身的函数中,还是在AJAX调用之外(,它要么看不到该变量,要么我的变量是空的。我想我处理这个问题是错误的。我可以在beforeSend中检查AJAX调用是否完成以结束循环吗?
您可以将间隔存储为全局变量,并在需要时清除它
let interval;
$.ajax({
url: vars.url,
type: "post",
data: r,
async: true,
processData: vars.process,
contentType: vars.contenttype,
beforeSend: function(){
if(vars.loadbar == 'true'){
interval = setInterval(function () {
$.getJSON(domain + '/core/files/results.json', function (data) {
console.log(data);
})
}, 1000);
}
},
complete: function(){
clearInterval(interval);
},
succes: function(data){
..................
}
}