对于具有setInterval的循环

时间:2017-10-11 04:36:03

标签: javascript node.js

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

请参阅下面的示例:

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)

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

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

感谢您的回复!

3 个答案:

答案 0 :(得分:2)

在这些情况下,不要将setInterval与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与递归函数

一起使用

答案 1 :(得分:0)

您可以使用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)

答案 2 :(得分:-1)

变量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)