Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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
为什么这段代码没有将我的消息记录5次到conosle(我使用了内置的javascript函数)?_Javascript_Settimeout_Setinterval_Built In_Clearinterval - Fatal编程技术网

为什么这段代码没有将我的消息记录5次到conosle(我使用了内置的javascript函数)?

为什么这段代码没有将我的消息记录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

预期产出: 这里是信息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(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);}