0

setInterval次から次へと開始する必要がありsetIntervalます。約束でこれを行う方法はありますか?

理想的には、コードを次のようにしたいと思います。

for (i=0; i<5; i++){
  setInterval(fun_1, 1000)
  //wait until this is done
}
4

3 に答える 3

0

前の間隔が完了した後、2番目の間隔でカウントダウンを開始することを意味しますか?その場合、あなたは言うでしょう

window.setTimeout(fun_1, 1000);

function fun_1
{
    window.setTimeout(fun_2, 1000);
}

これにより、最初のタイムアウトが完了した後、2番目のタイムアウトのカウントダウンが開始されます。

于 2012-08-08T17:33:39.307 に答える
0

最初の間隔が完了した後、次の間隔を呼び出す必要があります

var cnt = 0;
function executeNextStep(){
    fun_1();
    if (cnt<5) {
        window.setTimeout(executeNextStep,1000);
    }
    cnt++;
}
executeNextStep();  //execute this right away
//window.setTimeout(executeNextStep,1000); use this if you want it to be delayed

さまざまな機能を実行する必要がある場合:

function fun_1() {
    console.log(1);
}
function fun_2() {
    console.log(2);
}
function fun_3() {
    console.log(3);
}

var fnc_stack = [fun_1, fun_2, fun_3];
var cnt = 0;
function executeNextStep(){
    fnc_stack[cnt]();
    cnt++;
    if (cnt<fnc_stack.length) {        
        window.setTimeout(executeNextStep,1000);
    }
}
executeNextStep();
于 2012-08-08T17:33:56.133 に答える
0

は、オブジェクトsetIntervalが作成されるまで、指定された時間間隔の後に提供された関数を呼び出しclearます。So you do not need a loop for thisuse a counterカウンターが希望の値に達した後、それを終了することができます。

ライブデモ

var myInter;
i = 1;
function fun_1()
{
   // some code
   if(i++==5)
      clearInterval(myInter);
}    

myInter = setInterval(fun_1, 1000);
于 2012-08-08T17:35:26.917 に答える