For loop with setInterval



我用setInterval编写了一个for循环。目的是将 for 循环的输出"滴灌"给用户。所以基本上我想每10000ms发送console.log消息并将其输出到用户的控制台上。

请参阅下面的示例:

function longForLoop(limit) {
    for (var i = 0; i < limit; i++) {
        setInterval(() => {
            console.log("This is a long for loop. We are at " + i)
        }, 10000)
    }
}
longForLoop(10)

但是,我只能从整体上获得完整的结果?

有什么建议我在这里做错了什么吗?

感谢您的回复!

在这些情况下,不要使用 setInterval with for 循环,因为setInterval将无条件运行。 使用其中之一。我用了没有循环setInterval,一旦条件达到,我就会使用clearInterval

function longForLoop(limit) {
  var i = 0;
  var ref = setInterval(() => {
    console.log("This is a long for loop. We are at " + ++i);
    if (i == limit) clearInterval(ref);
  }, 1000);
}
longForLoop(10);

在其他方面,您也可以将setTimeout与递归函数一起使用

您可以使用

setTimeout 而不是 setInterval。看看我的例子:

function longForLoop(limit) {
for (var i = 0; i < limit; i++) {
    (function(j) {
       setTimeout(function() {
        console.log('j',j);      
       }, 100 + (1000 * j));
  })(i);
 }
}
longForLoop(10)

变量 i 绑定到匿名函数外部的值。使用下面的代码将 i 的值传递给函数

function longForLoop(limit) {
    for (var i = 0; i < limit; i++) {
        function innerFunction(valOfi)
        {
                console.log("This is a long for loop. We are at " + valOfi);
        }
        setInterval(innerFunction(i) , 10000)
    }
}
longForLoop(10)

最新更新