为什么这段代码没有将我的消息记录5次到conosle(我使用了内置的javascript函数)?
预期产出: 这里是信息1 这里是信息2 这里是信息3 这是信息4 这是信息5 实际产量: 这里是信息1 这里是信息2 这里是信息3 这是信息4为什么这段代码没有将我的消息记录5次到conosle(我使用了内置的javascript函数)?,javascript,settimeout,setinterval,built-in,clearinterval,Javascript,Settimeout,Setinterval,Built In,Clearinterval,预期产出: 这里是信息1 这里是信息2 这里是信息3 这是信息4 这是信息5 实际产量: 这里是信息1 这里是信息2 这里是信息3 这是信息4 let i = 1; const myInterval = setInterval(function() { console.log('Here is message ' + i); i = i + 1; }, 2000); // clear interval after specified time setTimeout(functi
let i = 1;
const myInterval = setInterval(function() {
console.log('Here is message ' + i);
i = i + 1;
}, 2000);
// clear interval after specified time
setTimeout(function() {
clearInterval(myInterval);
}, 10000);
以下是一些基于上述注释的代码。我认为您的代码有一个有效的目的(经过一些调整),但我认为它可能无法解决您的问题或情况的特定目的。始终尝试寻找最简单的解决方案。我建议你不要做
i=i+1
,只要做i++
,如果你只增加1
let i = 1;
const max = 5;
const mytimer = setInterval(function () {
if (i <= max) {
console.log("Here is message " + i);
i++;
} else {
console.log("end of timer");
clearInterval(mytimer);
}
}, 2000);
设i=1;
常数max=5;
const mytimer=setInterval(函数(){
如果(我的简短回答是,你无法预测js引擎将向事件循环添加第5个函数调用的顺序,而不是在添加计时器之前清除计时器。请阅读异步方法如何添加到事件循环以及事件循环如何工作好吧,我是js和编程新手,谢谢@charlietflRather,而不是使用setTimeout
当i
达到5时,您最好清除setInterval回调中的间隔计时器。我不知道该怎么做,您能给我举个例子吗?请@charliet使用基本if()
conditional…if(i==5){clearInterval(myInterval);}