我使用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)
但是,我只能从整体上得到完整的结果?
有什么建议我在这里做错了吗?
感谢您的回复!
答案 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)