简体   繁体   English

clearInterval无法与setInterval一起使用

[英]clearInterval not working with setInterval

I have a problem with the code below. 我的以下代码有问题。 Basically im implementing a polling mechanism, but when it is supposed to stop polling it just continues to poll. 基本上,我实现了轮询机制,但是当应该停止轮询时,它将继续轮询。 Polling infinite. 轮询无限。

Is there any other way to force it to stop? 还有其他方法可以阻止它停止吗?

The function SearchPoll is only called once. 函数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); 
}

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

If you want to kill all requests you need to work with the XMLHTTPRequest object returned from $.ajax. 如果要终止所有请求,则需要使用从$ .ajax返回的XMLHTTPRequest对象。 Here is an 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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM