0

我正在尝试使用 Javascript 显示一些文本,但仅显示几秒钟,具体取决于字符串的长度。我根据帖子如何限制 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 循环的更智能的解决方案吗?非常感谢。

4

1 回答 1

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);
}
于 2013-05-02T10:31:11.027 回答