Javascript 嵌套集合循环
两个setInterval循环应该如何嵌套 在外部循环(setInterval1)中,我希望每4秒发出一次服务器请求,然后在内部joop(setInterval2)中,我希望每1秒执行一次。过了一会儿,我的内部循环就发疯了,如果我试图清除它,它就永远不会触发Javascript 嵌套集合循环,javascript,Javascript,两个setInterval循环应该如何嵌套 在外部循环(setInterval1)中,我希望每4秒发出一次服务器请求,然后在内部joop(setInterval2)中,我希望每1秒执行一次。过了一会儿,我的内部循环就发疯了,如果我试图清除它,它就永远不会触发 您每4秒创建一个新的间隔。不要嵌套setInterval。也许您真正想要的是setTimeout?您每4秒创建一个新的间隔。不要嵌套setInterval。也许您真正想要的是setTimeout?不要嵌套setinterval(除非您清除
您每4秒创建一个新的间隔。不要嵌套
setInterval
。也许您真正想要的是setTimeout
?您每4秒创建一个新的间隔。不要嵌套setInterval
。也许您真正想要的是setTimeout
?不要嵌套setinterval(除非您清除它们,否则可能)
当您这样做时,会发生以下情况:
setInterval1
├────> function1 ────> setInterval2
│ ├────> function2
│ ├────────> function2
│ ├────────────> function2
│ ⋮
├────────> function1 ────> setInterval2
│ ├────> function2
│ ├────────> function2
│ ├────────────> function2
│ ⋮
├────────────> function1 ────> setInterval2
│ ├────> function2
│ ├────────> function2
│ ├────────────> function2
│ ⋮
├────────────────> …
⋮
我建议改为setTimeout
:
var计数器1=0;
var=2=0;
(函数超时1(){
控制台日志(“计数器1”,计数器1);
计数器1++;
var i=0;
(函数超时2(){
控制台日志(“计数器2”,计数器2);
计数器2++;
++一,;
设置超时(i<4?超时2:超时1,1000);
})();
})();代码>不要嵌套setInterval(除非您清除了它们)
当您这样做时,会发生以下情况:
setInterval1
├────> function1 ────> setInterval2
│ ├────> function2
│ ├────────> function2
│ ├────────────> function2
│ ⋮
├────────> function1 ────> setInterval2
│ ├────> function2
│ ├────────> function2
│ ├────────────> function2
│ ⋮
├────────────> function1 ────> setInterval2
│ ├────> function2
│ ├────────> function2
│ ├────────────> function2
│ ⋮
├────────────────> …
⋮
我建议改为setTimeout
:
var计数器1=0;
var=2=0;
(函数超时1(){
控制台日志(“计数器1”,计数器1);
计数器1++;
var i=0;
(函数超时2(){
控制台日志(“计数器2”,计数器2);
计数器2++;
++一,;
设置超时(i<4?超时2:超时1,1000);
})();
})();代码>您的意思是使用setTimeout而不是setInterval吗?setTimeout将等待4秒,然后您可以执行嵌套的setInterval,它将每秒执行一次操作。嵌套setInterval将每4秒启动第二个setInterval。“两个setInterval循环应该如何嵌套?”–关于“一点也不”?//使用一个每秒调用一个函数的循环,然后在该函数内部根据计数器确定当前迭代是否是4的倍数…@user2263572也许我的意思是(或想要)setTimeout。让我研究一个更好的方法。让我重新思考一下。@user1032531这是基于观点的。但是我永远不会使用setInterval
,除非出于某种调试目的,我总是更喜欢setTimeout
你的意思是使用setTimeout而不是setInterval吗?setTimeout将等待4秒,然后您可以执行嵌套的setInterval,它将每秒执行一次操作。嵌套setInterval将每4秒启动第二个setInterval。“两个setInterval循环应该如何嵌套?”–关于“一点也不”?//使用一个每秒调用一个函数的循环,然后在该函数内部根据计数器确定当前迭代是否是4的倍数…@user2263572也许我的意思是(或想要)setTimeout。让我研究一个更好的方法。让我重新思考一下。@user1032531这是基于观点的。但是我永远不会使用setInterval
,除非是为了调试,我总是更喜欢setTimeout
,谢谢Oriol,是的,我见证了指数级的增长!使用嵌套超时与使用带有逻辑的单个超时循环来确定周期有何想法?@user1032531您可以嵌套它们,但确保每次外部调用只调用内部函数4次。感谢Oriol,是的,我见证了指数级增长!使用嵌套超时与使用带有逻辑的单个超时循环来确定周期有什么不同吗?@user1032531您可以嵌套它们,但确保每次外部调用只调用内部函数4次。