1

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

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

函数 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); 
}
4

2 回答 2

0

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

于 2011-11-16T22:11:20.493 回答
0

如果您想终止所有请求,您需要使用从 $.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();
于 2011-11-16T22:22:18.300 回答