嵌套setinterval循环
Nesting setIntervals loops
如何嵌套两个setInterval循环?
在外部循环(setInterval1)中,我希望每4秒发出一个服务器请求,然后在内部循环(setInterval2)中,我希望每1秒做一些事情。过了一会儿,我的内循环变得疯狂,如果我试图清除它,它永远不会触发。
https://jsfiddle.net/y1f6nm6z/var counter1 = 0;
var counter2 = 0;
var setInterval1 = setInterval(function() {
//$.getJSON( '/getData.php', function(json) {
console.log('counter1', counter1);
counter1++;
var setInterval2 = setInterval(function() {
console.log('counter2', counter2);
counter2++;
}, 1000);
//clearInterval(setInterval2);
//});
}, 4000);
不要嵌套setinterval (除非您可能清除它们)
如下所示:
setInterval1
├────> function1 ────> setInterval2
│ ├────> function2
│ ├────────> function2
│ ├────────────> function2
│ ⋮
├────────> function1 ────> setInterval2
│ ├────> function2
│ ├────────> function2
│ ├────────────> function2
│ ⋮
├────────────> function1 ────> setInterval2
│ ├────> function2
│ ├────────> function2
│ ├────────────> function2
│ ⋮
├────────────────> …
⋮
我推荐setTimeout
代替:
var counter1 = 0;
var counter2 = 0;
(function timeout1() {
console.log('counter1', counter1);
counter1++;
var i = 0;
(function timeout2() {
console.log('counter2', counter2);
counter2++;
++i;
setTimeout(i < 4 ? timeout2 : timeout1, 1000);
})();
})();
即使你嵌套它们,它们通常比setInterval
更少的问题。但是使用一些条件来确保只在必要时调用setTimeout
。
var counter1 = 0;
var counter2 = 0;
(function timeout1() {
console.log('counter1', counter1);
counter1++;
var i = 0;
(function timeout2() {
console.log('counter2', counter2);
counter2++;
++i;
if(i < 4) setTimeout(timeout2, 1000);
})();
setTimeout(timeout1, 4000);
})();
每4秒创建一个新的间隔。不要嵌套setInterval
。也许你真正想要的是setTimeout
?
相关文章:
- setInterval游戏循环的范围问题
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 使用SetInterval进行无休止循环
- 在循环中运行setInterval()计时器-jQuery/JS
- for 循环中 setInterval 中计数器变量 i 的作用域
- javascript 对象键值循环 setInterval
- 当我把它放到setInterval循环中时,event.clientY是未定义的
- 如何重新排列此代码,以便我的 setInterval 无限停止循环
- 循环动画javascript,SetInterval只工作一次
- JavaScript - 每次迭代的 setInterval 不在 do-while 循环中执行
- 尝试在最后一项上停止 setInterval 循环
- setInterval 函数循环太快
- 为什么setInterval()循环每次都更快
- 循环nodejs中的setInterval
- Javascript,setInterval在while循环之后开始?如何使它在while循环内部启动
- 当ExecuteScript(setInterval)完成时,继续“while”循环
- FOR循环内的setInterval
- 如何停止setInterval循环
- 循环setInterval函数
- 通过多个函数循环/setinterval