特定のポイントに達すると、タイマーがリセットされ、最初からやり直すタイマーを作成したい。
今、ループを設定しました。テストとして、5000ミリ秒(5秒)後にリセットするようにします。しかし、カウンターはすべてがっかりしています。
ここでWIPデモ: http://jsfiddle.net/stursby/wUHA3/
SetTimeoutの代わりに、setIntervalの使用を検討してください。間隔を空けるまで自動的に繰り返されます。
setInterval(myMethod, 5000);
function myMethod( )
{
//this will repeat every 5 seconds
//you can reset counter here
}
おそらくsetInterval
の代わりにsetTimeout
を使用する必要があることにkeyboardPに同意します。ただし、元の質問に答えるために、タイマーに問題がある理由は、繰り返しロジックのためです。使用しないでください:
var diff = (new Date().getTime() - start) - time;
window.setTimeout(instance, (100 - diff));
実行時間を考慮する必要はありません(diff
で実行しようとしていたことだと思います)。無視できると仮定して使用してください:
setTimeout(instance, 100);
this jsFiddle でわかるように、問題は解決されています。