ajax调用完成后结束setInterval


$.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){
..................
}
}

最新更新