Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 23.05.2013, 16:59
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

если будете обращаться к одной переменной, то может и будет конфликт.. а если не будете то и конфликта не будет..
var a = 0;
setInterval(function()
{
a = 5;
}, 4000);

setInterval(function()
{
a = 10;
}, 3500);

setInterval(function()
{
console.log(a);
}, 1000);

здесь будет конфликт. переменная будет менять свое значение то на 5 то на 10
Ответить с цитированием
  #12 (permalink)  
Старый 23.05.2013, 17:01
Новичок на форуме
Отправить личное сообщение для DanilAndreev Посмотреть профиль Найти все сообщения от DanilAndreev
 
Регистрация: 23.05.2013
Сообщений: 6

спасибо!
Ответить с цитированием
  #13 (permalink)  
Старый 23.05.2013, 20:48
Аватар для zOdmin
Аспирант
Отправить личное сообщение для zOdmin Посмотреть профиль Найти все сообщения от zOdmin
 
Регистрация: 05.03.2012
Сообщений: 62

В javascript есть всего две функции, которые позволяют отложить выполнение некоторого кода - это setTimeout и setInterval. Их удобнее всего использовать для отображения Ваших таймеров, потому что эти функции не дают гарантий, что вызов будет вовремя. То есть при каждой перерисовке таймера, нужно заново высчитывать, сколько прошло времени (с помощью объекта Date).

Синхронизация с реальным временем - тот еще гемор. Где его взять - это отдельный вопрос, я буду считать, что у Вас на сервере время эталонное. Таким образом, есть 2 времени - эталонное на сервере и локальное на компьютере. Локальное, ествественно, у каждого свое. К тому же локальные клиенты (их устройства) могут быть вообще настроены на другие часовые пояса. Поэтому стратегия такая:
1) При запуске запоминаем время начала работы скрипта. (объект Date)
2) получаем с сервера эталонное время (его можно вставить динамически прямо в тело скрипта при формировании страницы на сервере).
3) Смотрим разницу между эталонным и локальным.

Таким образом, мы в любой момент можем посчитать эталонное время на сервере, обращаясь лишь к локальному времени и прибавляя разницу. Каждая отрисовка таймера - это вычисление этого самого эталонного времени, и сопутствующие решения о том, какой таймер рисовать в данный момент.

Время удобнее всего хранить в секундах или в миллисекундах (timestamp, метка времени). Тогда это просто число, означающее момент в прошлом, настоящем или будущем.

Если нужна сверхточность до миллисекунд, то это двойной гемор - придется еще как-то определить пинг до сервера и прибавить его к разнице между локальным и эталонным временем.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зацикленный таймер jacko Общие вопросы Javascript 2 01.07.2012 14:32
Дебаг js, или как найти обработчик события для тега jimm88 Events/DOM/Window 1 18.04.2012 15:11
Передача параметров в колбэки и дальнейшее их вешанье на события. Gremlin Общие вопросы Javascript 17 13.08.2011 08:54
Таймер для слайдера (jQuery) RamPi Events/DOM/Window 0 23.05.2011 14:52
Как два раза вставить таймер alexvost Общие вопросы Javascript 2 08.02.2011 02:28