Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript clearInterval不使用setInterval_Javascript_Timer_Setinterval_Clearinterval - Fatal编程技术网

Javascript clearInterval不使用setInterval

Javascript clearInterval不使用setInterval,javascript,timer,setinterval,clearinterval,Javascript,Timer,Setinterval,Clearinterval,我对下面的代码有问题。 基本上我实现了一个轮询机制,但是当它应该停止轮询时,它只是继续轮询。轮询无限 有没有其他办法迫使它停止 函数SearchPoll只调用一次 function SearchPoll(){ var i = setInterval(function () { var url = "Search.aspx?polling=true"; $.ajax( { url: ur

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

有没有其他办法迫使它停止

函数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对象。以下是一份:

函数搜索池(){
var xhrArray=[],
interval=setInterval(函数(){
var url=“Search.aspx?polling=true”;
xhraray.push($.ajax({
url:url,
成功:函数(数据){
对于(变量i=0;i
您是否确认您正在运行一个调用
clearInterval
的代码块?请务必执行2.,
窗口。
不应明确写入其中,也适用于
clearInterval
。风格也很重要。:-)好吧,我发现它是有效的,但它不会立即停止池。。在它停下来之前,会有两个额外的游泳池。。但为什么呢?是否应该在调用clearInterval时立即停止?或者是线程问题。。我的应用程序是多线程的,所以我看到的可能只是返回线程的调用?它是轮询,而不是池。池化意味着创建一个池,这应该是什么?发送多个请求直到其中一个返回?这有什么意义?为什么要发送多个请求?
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();