在解决了一个关于如何使用 setIterval 函数每隔 XXX 秒显示一个数组的数据的问题后,代码如下:
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);
interval = setInterval(foo, 8000);
}
}
我想清理东西并将所有这些封装到一个函数中。问题是,当我将全局变量插入函数时,foo 说所有变量都是未知的,所以我必须将它们作为 attrs 传递。另外,我已将时间间隔更改为此以检测它,但现在它不起作用。同时显示所有数据,似乎忽略了setIterval
runTest();
function runTest(){
var iterations = 0,
data = [1,2,3,4,5],
maxIterations = 5,
interval = setInterval(foo(iterations,data,maxIterations),4000);
}
function foo(iterations,data,maxIterations){
var sentence = data[iterations];
var div = d3.select('div').append('p').text(sentence);
iterations++;
if (iterations >= maxIterations){
clearInterval(this);
}else{
clearInterval(this);
interval = setInterval(foo(iterations,data,maxIterations),4000);
}
}
如果我在 Chrome 调试器流应用程序上设置断点似乎是正确的。
你知道问题出在哪里吗?谢谢!