2016-09-11 1 views
1
var x = 2; 

setInterval(function() { 
    while(z){}; //do nothing if z = 1, therefor stalling and blocking the next steps: 
    change(x++); 
    if (x > 39) x = 1; 
}, 7000); 

プログラム内の他の場所:ボタンは一時停止ボタンが押されており、zを1または0にトグル(xor-ing)してインターバル機能をブロックします。そうでなければ、z == 0ならば、これをスキップします。この機能のブロックをより効率的に行う方法は何ですか?

これは、非効率的でプログラミングが悪く、JSで問題を引き起こす可能性があるが、同じことを実現する何かをしたいという理由がいくつかあることを認識しています。私は強力なCプログラマですが、javascriptは私には新しく、この問題に対する私のCのアプローチは、私のjavascriptの能力の中にはないようです。私は基本的に、ポーズボタンを押したときにインターバル機能を一時停止しようとしています。

EDIT:変更()関数が長く、本当に問題ではありませんが、それは、応答に感謝命令の任意のセットかもしれ

+0

JavaScriptタイマーを一時停止して再開するには、このリンクをクリックしてください:http://stackoverflow.com/questions/5855803/how-to-pause-timer-or-freeze-it-and-resume-javascript – petryuno1

+0

あなたが何をしても、しないでください。あなたは 'change()'関数を投稿していません。おそらく関係ありません。無限ループが始動すると決して呼び出されないからです。 – Pointy

+0

*無限ループをしないでください。 JavaScriptコードはブラウザのUIコードと同じスレッドで実行されるため、JavaScriptコードの無限ループによってサイトが応答しなくなる可能性があります。 – Frxstrem

答えて

-1

インターバルIDを格納する方が良いだろう

var x = 2; 

var intervalID = setInterval(function() { 
    change(x++); 
    if (x > 39) x = 1; 
}, 1000); 

と一時停止ボタンが押されたとき - 休止

clearInterval(intervalID);

を実装するために使用してclearIntervalを

+0

そのループはほとんど意味がありませんが、clearInterval呼び出しが必要です。 –

関連する問題