我正在尝试使用Javascript显示一些文本,但只有几秒钟,具体取决于字符串的长度。我根据帖子How to limit the number of iterations done by setInterval的答案创建了一个非常简单的例子。但在我的情况下不起作用:
<script>
var iterations = 0,
data = ['a','bbbbbbbb','c'],
interval = setInterval(foo, 4000);
function foo() {
console.log(data[iterations]);
iterations++;
if (iterations >= 4){
clearInterval(interval);
}else if(iterations == 1){
//we want to make time longer in this iteration.
clearInterval(interval);
var interval = setInterval(foo, 8000);
}
}
</script>
我想在4秒后输出'a',8后输出'bbbbbbbb',再输4后输出'c'。
你可以看到我有一个包含3个元素的数组。对于迭代1,它应该等待更多时间但不会。对于所有情况,等待4秒,我们有一个无限循环。
我已经检查过其他函数,例如break不能与setInterval函数一起使用。
它是否是一个不基于for循环的更智能的解决方案?非常感谢。
答案 0 :(得分:1)
您将区间重新声明为'foo'中的局部变量。
从以下位置更改此代码块:
else if(iterations == 1){
//we want to make time longer in this iteration.
clearInterval(interval);
var interval = setInterval(foo, 8000);
}
这个(没有'var'关键字):
else if(iterations == 1){
//we want to make time longer in this iteration.
clearInterval(interval);
interval = setInterval(foo, 8000);
}