javascript - 带 for 循环的 setInterval/setTimeOut 函数显示意外结果

标签 javascript jquery for-loop

for (var i = 0; i <= 2; ++i) {
    display_para(i);
};

function display_para(i){

    setInterval(function(){
        console.log(i);

        //Stuff to be done

    }, 1500 + i * 2000);
};


Expected result:
0 1 2 ; 0 1 2; 0 1 2 and so on.

而它显示不同的输出,如屏幕截图所示。

enter image description here

我不明白我哪里出了问题。

最佳答案

这是因为您如何设置计时器,0 调用将每 1500 毫秒执行一次,1 调用将每 3500 毫秒执行一次,2 调用将每 3500 毫秒执行一次。每 5500 毫秒调用一次。

一种解决方案是使用单个interval,其中基于计数器您决定要打印的值,例如

var i = 0;
setInterval(function() {
  display_para(i);
  if (++i > 2) {
    i = 0;
  }
}, 1500);

function display_para(i) {
  document.body.innerHTML += i + '<br />'
};

关于javascript - 带 for 循环的 setInterval/setTimeOut 函数显示意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34938943/

相关文章:

javascript - 防止按钮重置文本框值

c++ - 使用 size_t 初始化循环变量时整数下溢

javascript - 显示与单击的 id 具有相同类的所有数据

javascript - 在 for 循环中创建新对象 - Javascript

c++ - 更好地解释数组

javascript - Jest/ react - TypeError : Cannot read property 'touchStart' of undefined

javascript - 使用 Struts 1.3 更改 javascript 中表单属性的值

javascript - Katalon Selenium Element 可见但显示为 false

javascript - 我如何访问这个 Javascript 属性?

jquery - 如何淡化循环背景图像?