Показать сообщение отдельно
  #1 (permalink)  
Старый 08.03.2011, 23:11
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Секундомер. Погрешность при использовании setInterval
Пытаюсь реализовать секундомер с выводом времени с точностью до 1\100 секунды. При использовании функции setInterval возникают заметные неточности во времени (примерно каждые 30 секунд секундомер отстает на 1 секунду). Если точность уменьшить до 1\10 секунды, то отставание незаметно (по логике должен отставать на секунду каждые 5 минут).
...
hoursVal = minutesVal = secondsVal = msecondsVal = 0;
			
			var interval = setInterval(function(){
				if (msecondsVal < 99) {
					mseconds.innerText = ++msecondsVal;
				} else {
					mseconds.innerText = msecondsVal = 0;
					if (secondsVal < 59) {
						seconds.innerText = ++secondsVal;
					} else {
						seconds.innerText = secondsVal = 0;
						if (minutesVal < 59) {
							minutes.innerText = ++minutesVal;
						} else {
							minutes.innerText = minutesVal = 0;
						}
					}
				}
			},10);

Вот код. Есть мысль, что задержка происходит из-за использования свойства innerText. Пробовал использовать два интервала (один для расчета, другой для вывода), но зря.

Как обойти данную проблему?

P.S. Пробовал использовать setTimeout, погрешность осталась.
Ответить с цитированием