次のコードで 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 はすべての変数が不明であると言うので、それらを属性として渡す必要があることです。また、それを検出するために間隔をこれに変更しましたが、現在は機能しません。すべてのデータを同時に表示し、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デバッガーフローアプリにブレークポイントを設定すると、正しいようです。
どこに問題があるか知っていますか?ありがとう!