Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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 即使previos回调没有';我还没完成工作_Javascript_Settimeout_Setinterval - Fatal编程技术网

Javascript 即使previos回调没有';我还没完成工作

Javascript 即使previos回调没有';我还没完成工作,javascript,settimeout,setinterval,Javascript,Settimeout,Setinterval,即使前一个回调(由相同的setInterval触发)尚未完成其工作,传递给setInterval函数的回调是否会被触发?如果是这样,我可以做些什么来避免这种行为?我应该使用自己的布尔标志(如inProcess)还是每次调用setTimeout,而不是setInterval?基本上是的,即使之前的一些演练尚未完成,也会触发setInterval(..)的回调。我认为inProcess标志对您来说是最干净的解决方案(即使它是最容易理解的)我建议使用setTimeout 我也有类似的问题,我必须每隔3

即使前一个回调(由相同的
setInterval
触发)尚未完成其工作,传递给
setInterval
函数的回调是否会被触发?如果是这样,我可以做些什么来避免这种行为?我应该使用自己的布尔标志(如
inProcess
)还是每次调用
setTimeout
,而不是
setInterval

基本上是的,即使之前的一些演练尚未完成,也会触发setInterval(..)的回调。我认为inProcess标志对您来说是最干净的解决方案(即使它是最容易理解的)

我建议使用
setTimeout

我也有类似的问题,我必须每隔3秒轮询服务器上的某些数据,直到我收到数据或达到阈值。我写过这样的东西:

函数getData(){ $.post(url、数据、函数(res){ if((res.error | | res.data.length==0)和&pollCount<20){ initTimeout(); } 否则{ processData(res.data); } }) } 函数initTimeout(){ 无功延迟=3000; setTimeout(函数(){getData();},延迟) } initTimeout(); 这种方法的好处是

  • 首先,您不必将
    interval/timeout
    变量设为全局/在父范围内,这样就可以在成功时清除
  • 其次,
    initTimeout
    可以像
函数initTimeout(回调,延迟){
setTimeout(函数(){
回调();
},延误);
}

是。如果需要等待它完成,则应使用
setTimeout()
,并仅在工作完成时调用它。