Подтвердить что ты не робот

Петля таймера javascript

Я хочу создать таймер, который, когда он достигнет определенной точки, таймер сбрасывается, а затем начинается.

Прямо сейчас, у меня настроен цикл, и в качестве теста я хочу его reset после 5000 мс (5 секунд). Но счетчик идет все в порядке.

WIP Демо здесь: http://jsfiddle.net/stursby/wUHA3/

4b9b3361

Ответ 1

Вместо setTimeout, используйте setInterval. Он будет повторяться автоматически, пока вы не очистите интервал.

setInterval(myMethod, 5000);

function myMethod( )
{
  //this will repeat every 5 seconds
  //you can reset counter here
}

Ответ 2

Я согласен с клавиатуройP, что вы, вероятно, должны использовать setInterval вместо setTimeout. Однако, чтобы ответить на ваш первоначальный вопрос, причина, по которой у вас возникают проблемы с таймером, связана с вашей логикой повторения. Не использовать:

var diff = (new Date().getTime() - start) - time;
window.setTimeout(instance, (100 - diff));

Вам не нужно проверять время выполнения (что я предполагаю - это то, что вы пытались сделать с diff). Просто предположите, что это незначительно и используйте:

setTimeout(instance, 100);

И ваша проблема решена, как вы можете видеть в этот jsFiddle.