私はカウントダウンタイマーを作っています。私がsetInterval()関数を取り出し、一時停止せずに時間を減らすと、プログラムは正しく動作します。setInterval timer function not working
しかし、setInterval()関数を使用して毎秒だけ時間を減らすコードを呼び出すと、プログラムがハングします。
function timeControl() {
var minutesLeft = $('#minutes').text();
var secondsLeft = $('#seconds').text();
while(Number(minutesLeft) > 0 || Number(secondsLeft) > 0) {
window.setInterval(decreaseTime, 1000);
minutesLeft = $('#minutes').text();
secondsLeft = $('#seconds').text();
}
}
function decreaseTime() {
var secondsLeft = $('#seconds').text();
var minutesLeft = $('#minutes').text();
if((Number(minutesLeft) > 0) && (Number(secondsLeft) == 0)) {
$('#minutes').text(Number(minutesLeft) - 1);
$('#seconds').text(4);
} else {
$('#seconds').text(Number(secondsLeft) - 1);
}
}
'setInterval'は非同期なので、あなたのコードは要素を更新していないので、無限ループになります。 –
これはあなたが 'setInterval()'を使う方法ではありません。スケジュールされているものに依存する 'while'ループはありません。終了することはありません。 –
[なぜsetIntervalが無限ループになるのですか?](https://stackoverflow.com/questions/37200897/why-is-setinterval-making-infinite-loops) –