我用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)