Javascript 如何每秒在索引中连续输出每个数字?
我有以下循环:Javascript 如何每秒在索引中连续输出每个数字?,javascript,for-loop,setinterval,console.log,Javascript,For Loop,Setinterval,Console.log,我有以下循环: for(让index=0;index=限制){//检查限制 clearInterval(句柄);//停止计时器 } } 函数停止(){ 间隙(手柄); } start(); setTimeout(函数(){ start(); },3110); // 计数时重置。这里有一个或多或少但更优雅的解决方案,使用生成器函数 生成器函数在这里很有用,因为它们的执行可以通过yield暂停,并通过调用生成器对象的next方法恢复: 函数*logger(){ while(true){ 对于(让
for(让index=0;index<4;index++){
setInterval(函数(){
console.log(索引)
}, 1000);
}
var计数器=0,
限值=5,
句柄;//全局变量
函数start(){
计数器=0;
clearInterval(句柄);//重置
handle=setInterval(count,1000);//间隔句柄
}
函数计数(){
console.log(counter++);//递增计数器
如果(计数器>=限制){//检查限制
clearInterval(句柄);//停止计时器
}
}
函数停止(){
间隙(手柄);
}
start();
setTimeout(函数(){
start();
},3110); // 计数时重置。
这里有一个或多或少但更优雅的解决方案,使用生成器函数
生成器函数在这里很有用,因为它们的执行可以通过yield
暂停,并通过调用生成器对象的next
方法恢复:
函数*logger(){
while(true){
对于(让索引=0;索引<4;索引++){
console.log(索引)
产量
}
}
}
让生成器=记录器()
setInterval(()=>generator.next(),1000)
提示:将setInterval
放入循环中是不正确的。这样做的目的是立即调用setInterval
5次,而实际上您要做的是调用setInterval
一次,并让它在每次运行回调时输出不同的数字。这很好,谢谢。清除间隔后,如何重新启动间隔,使其在达到4后返回到0?@RalphDavidernathy您只需将开始计数的代码包装为一个函数,并在需要时调用它。