Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
Jquery 清除间隔和范围_Jquery_Intervals - Fatal编程技术网

Jquery 清除间隔和范围

Jquery 清除间隔和范围,jquery,intervals,Jquery,Intervals,这里有一些时间间隔的问题 基本的意思是我有一个进度条函数,每行1个,从后端脚本获取信息。在ajax调用的间隔内,我每5秒ping一次这个脚本 这是可行的,但是在多次(即,第二个进度条调用相同的函数)或当项目“关闭”(div幻灯片)时,它应该停止存在问题。这是一段非常复杂的代码,因此我将尽最大努力提取必要的部分,但请注意,目前来看,这可能不会运行 一次完整的演练-已更改函数名称以保护无辜者:) onlcick,div打开,调用此启动函数: function start(ID){ var reque

这里有一些时间间隔的问题

基本的意思是我有一个进度条函数,每行1个,从后端脚本获取信息。在ajax调用的间隔内,我每5秒ping一次这个脚本

这是可行的,但是在多次(即,第二个进度条调用相同的函数)或当项目“关闭”(div幻灯片)时,它应该停止存在问题。这是一段非常复杂的代码,因此我将尽最大努力提取必要的部分,但请注意,目前来看,这可能不会运行

一次完整的演练-已更改函数名称以保护无辜者:)

onlcick,div打开,调用此启动函数:

function start(ID){
var request = $.ajax({  
    url: "script?DO=Start&ID="+ID
    ,  type: "GET"              
    ,  cache: false
    ,  dataType: "text"
});
request.done(function(msg) {
    startLoop(ID);      

});
request.fail(function(jqXHR, textStatus) {
    //alert("Request failed: " + textStatus );      
});
}
如您所见,这将调用StartOOP fnc,它将继续ping更新信息脚本(getInfo())以获取信息:

function startLoop(ID){
var i = setInterval(function(){
    var xstatus = getInfo(ID);
    //other stufff that works       
    if(xstatus=="done"){
        clearInterval(i);
    }

}, 5000);
}
这本身就很好

如果第二次单击事件打开第二个窗口,则它只会有一个新ID并调用相同的函数

因此,我有一个间隔,摧毁一个似乎可以阻止一切。 我是否应该将i转换为对象,如i.ID

另外,当停止时,我有一个onclick=stop()调用,从循环外部看,我似乎无法停止它

我如何重新安排以使其工作


它应该支持一个或多个同时项目的启动、停止和自动更新

为什么不使用
setTimeout
而不是
clearInterval
,因为您已经将终止间隔的责任放在了它的回调中:

// using this approach might require changing the name of this function
function startLoop(ID) { 
   setTimeout(function(){
        var xstatus = getInfo(ID);

        //other stufff that works       
        if(xstatus!=="done"){
            startLoop(ID); // do it all over again if it's not complete
        }

    }, 5000);
}

这将给你同样的行为,但有几个额外的奖金。首先,这不应该导致你的其他工作在一项工作完成后被终止。另一个是,这将异步运行,因此,如果请求开始需要5秒以上的时间才能完成,则超时在返回后5秒内不会再次ping它,而不是每5秒盲目触发一次,无论请求是否已完成。

为什么不使用
setTimeout
而不是
clearInterval
,由于您已经将终止间隔的责任放在其回调中:

// using this approach might require changing the name of this function
function startLoop(ID) { 
   setTimeout(function(){
        var xstatus = getInfo(ID);

        //other stufff that works       
        if(xstatus!=="done"){
            startLoop(ID); // do it all over again if it's not complete
        }

    }, 5000);
}

这将给你同样的行为,但有几个额外的奖金。首先,这不应该导致你的其他工作在一项工作完成后被终止。另一个是,这将异步运行,因此,如果请求开始需要5秒以上的时间才能完成,则超时在返回后的5秒内不会再次ping它,而不是每5秒盲目触发一次,无论请求是否已完成。

hrm。。。我orig把它作为setTimeout,并被告知这不是一种方法,间隔是更明智的方法。这是否支持多个呼叫?ID=1和ID=2调用同一个函数(因此,xstatus以两个不同的间隔响应)?为什么要使用setTimeout“not the way to go?”它应该适用于多个调用;该ID由超时回调关闭,并在每次迭代中向前发送,并在每次调用StartOOP时单独维护。我在本地进行了测试,两个这样的循环方案并排运行似乎很好。谢谢你的建议。我会在这里工作,并报告我的结果(有大量的工作正在进行),这似乎工作得更好。谢谢你的指导。人力资源管理。。。我orig把它作为setTimeout,并被告知这不是一种方法,间隔是更明智的方法。这是否支持多个呼叫?ID=1和ID=2调用同一个函数(因此,xstatus以两个不同的间隔响应)?为什么要使用setTimeout“not the way to go?”它应该适用于多个调用;该ID由超时回调关闭,并在每次迭代中向前发送,并在每次调用StartOOP时单独维护。我在本地进行了测试,两个这样的循环方案并排运行似乎很好。谢谢你的建议。我会在这里工作,并报告我的结果(有大量的工作正在进行),这似乎工作得更好。谢谢你的指导。