ajax 调用完成时结束 setInterval

Ending setInterval when ajax call is complete

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

    }