0

Javascript コードに 2 つの関数があり、一方が他方でループされています。

何かのようなもの:

function doThis(){
   doThat();          
   window.setTimeout( doThis , 2000); 
}

function doThat(){
   if(someCondition){
   window.clearTimeout(id)
   }
   var id = window.setTimeout( doThat, 10000);
}

まさに私がやりたいこと: がロードさdoThisれるとすぐに呼び出されwindowます。doThat()これで、呼び出されるとすぐに、再度実行する前に 10 秒間待機するコントロールを引き渡す必要があります。

これで、条件が満たさdoThat()れるまで実行されます。ifそして、コントロールdoThis()を 2 秒間待ってから、このサイクルを何度も繰り返す必要があります。

jQuery (コールバックまたは連鎖処理) やその他の JavaScript ライブラリを使用したくありません。これを行うにはどうすればよいですか?

4

2 に答える 2

2

私の理解が正しければ、

function first() {
    setTimeout(second, 1000)
}

function second() {
    if(condition) {
        setTimeout(first, 2000)
    } else {
        setTimeout(second, 10000)
    }
}

タイムアウトをどこかに保存したり、クリアしたりする必要はありません。

于 2013-05-12T11:37:50.640 に答える
0

使用setInterval()する方が適切かもしれません:リンク

于 2013-05-12T11:33:19.093 に答える