clearInterval不使用setInterval

时间:2011-11-16 21:36:46

标签: javascript timer setinterval clearinterval

我的代码存在问题。 基本上我实现了一个轮询机制,但当它应该停止轮询时,它继续轮询。轮询无限。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果要杀死所有请求,则需要使用从$ .ajax返回的XMLHTTPRequest对象。这是一个example

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();