clearInterval不能与setInterval一起工作

clearInterval not working with setInterval

本文关键字:一起 工作 setInterval 不能 clearInterval      更新时间:2023-09-26

我对下面的代码有一个问题。基本上,我正在实现一种轮询机制,但是当它应该停止轮询时,它只是继续轮询。轮询无限。

还有其他方法可以强制它停止吗?

SearchPoll函数只被调用一次。

function SearchPoll(){
    var i = setInterval(function () 
    { 
        var url = "Search.aspx?polling=true";        
        $.ajax( 
        { 
            url: url,
            success: function (data) 
            {     
                clearInterval(i); 
            }, 
            error: function () 
            { 
                clearInterval(i); 
            } 
        }); 
    }, 1000); 
}

如果您想终止所有请求,您需要使用从$.ajax返回的XMLHTTPRequest对象。下面是一个例子:

function SearchPool(){
    var xhrArray = [], 
        interval = setInterval(function () { 
            var url = "Search.aspx?polling=true";        
            xhrArray.push($.ajax({ 
                url: url,
                success: function (data) {     
                    for(var i = 0; i < xhrArray.length; i+= 1) {
                        xhrArray[i].abort();
                    }
                    clearInterval(interval); 
                }, 
                error: function () { 
                    clearInterval(interval);
                } 
            })); 
        }, 20);
}
SearchPool();

这个小提琴似乎工作正常…http://jsfiddle.net/sramam/yZTAK/