setInterval在javascript中循环遍历数组?

ios*_*eak 5 javascript setinterval

我有一个网站,他们想要一个新闻自动收报机.目前,我有一个填充它的数组,每隔x秒,我想要改变新闻故事.

function startNews(stories) {

}
Run Code Online (Sandbox Code Playgroud)

我知道你可以使用setInterval,但它必须通过一个新的功能,你不能在同一个函数中指定某些javascript来触发它.

你有什么建议?

谢谢!

jfr*_*d00 13

你应该使用setInterval()或重复调用setTimeout().这就是你将来某个时候在javascript中做的事情.

使用这些定时器功能可以做什么没有限制.你认为你不能做到这一点是什么让你试图避免它们?

这是一个伪代码示例:

var newsArray = [];   // your code puts strings into this array
var curNewsIndex = -1;

var intervalID = setInterval(function() {
    ++curNewsIndex;
    if (curNewsIndex >= newsArray.length) {
        curNewsIndex = 0;
    }
    setTickerNews(newsArray[curNewsIndex]);   // set new news item into the ticker
}, 5000);
Run Code Online (Sandbox Code Playgroud)

或者可以这样做:

var newsArray = [];   // your code puts strings into this array
var curNewsIndex = -1;

function advanceNewsItem() {
    ++curNewsIndex;
    if (curNewsIndex >= newsArray.length) {
        curNewsIndex = 0;
    }
    setTickerNews(newsArray[curNewsIndex]);   // set new news item into the ticker
}

var intervalID = setInterval(advanceNewsItem, 5000);
Run Code Online (Sandbox Code Playgroud)


Dre*_*rew 8

你应该尽可能使用setTimeout.如果您的函数运行时间比间隔长,则可能会遇到持续100%的CPU使用情况.

试试这段代码:http: //jsfiddle.net/wdARC/

var stories = ['Story1','Story2','Story3'], 
    i = -1;
(function f(){
    i = (i + 1) % stories.length;
    document.write(stories[ i ] + '<br/>');
    setTimeout(f, 5000);
 })();
Run Code Online (Sandbox Code Playgroud)

替换document.write为您的功能.

  • 为什么“应该”使用 setTimeout 而不是 setInterval (2认同)