Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.01.2009, 02:16
Аспирант
Отправить личное сообщение для Bajjy Посмотреть профиль Найти все сообщения от Bajjy
 
Регистрация: 25.09.2008
Сообщений: 33

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

Пример того, что я хочу (в очень убогом виде ) выглядит так :
var a=5; //это типа интервал добавленной ф-ции
var cycle=0;
timeline = function (){ //изначально timeline пуста
	if (a == 0){
		prim();
		a=5
	}
a--	
setTimeout(timeline,1)	
}
prim(){cycle++} //нуждается в периодическом выполнении

спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 09.01.2009, 02:27
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

А в чем вопрос!?
Ответить с цитированием
  #3 (permalink)  
Старый 09.01.2009, 02:37
Аспирант
Отправить личное сообщение для Bajjy Посмотреть профиль Найти все сообщения от Bajjy
 
Регистрация: 25.09.2008
Сообщений: 33

изначально ф-ция таймлайна выглядит так:
timeline = function (){
setTimeout(timeline,1)
}

а ф-ций таких как prim() может быть много и добавлять к таймлайну и удалять их оттуда нужно динамически, поэтому глобальная переменная в роли интервала не подходит. Вопрос как решить эту задачу о_0
вообще возможно в функцию динамически добавить кусок кода?
Ответить с цитированием
  #4 (permalink)  
Старый 09.01.2009, 12:05
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Добавляйте функции в массив и каждый раз по таймеру пробегайте по элементам (функциям) массива и запускайте их.
Ответить с цитированием
  #5 (permalink)  
Старый 09.01.2009, 13:03
Аспирант
Отправить личное сообщение для Bajjy Посмотреть профиль Найти все сообщения от Bajjy
 
Регистрация: 25.09.2008
Сообщений: 33


все бы хорошо, только интервал-то у ф-ций может быть разный.
предлагаете задать отдельный массив для переменных-интервалов?
Ответить с цитированием
  #6 (permalink)  
Старый 09.01.2009, 13:50
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Как вы все это синхронизировать собрались в одной функции, если интервалы могут быть разные. Активное ожидание потребует слишком много ресурсов и скрипт будет остановлен, а допустим, если ввести ограничение, чтобы интервал, по которому будут запускаться функции не был меньше 10мс, и проверять каждые 10мс, то из-за погрешностей таймеры не будут совпадать. Да и необходимость решения подобной задачи в JavaScript не понятна, зачем вам это?
Ответить с цитированием
  #7 (permalink)  
Старый 09.01.2009, 14:31
Аспирант
Отправить личное сообщение для Bajjy Посмотреть профиль Найти все сообщения от Bajjy
 
Регистрация: 25.09.2008
Сообщений: 33

Я сталкивался с проблемой когда из за лагов браузера функции которые должны выполняться синхронно (с разными сетТаймаутами) глючили и выполнялись не синхронно. Обычно это незаметные доли секунды, но из-за погрешности, со временем не синхронность становится заметной. А если все ф-ции выполняются одним сетТаймаутом, то и ступор подействует на все, а значит никакой погрешности не будет.
Если реализовать активное ожидание через if (как я писал в топе), например, это займет много ресурсов?
Ответить с цитированием
  #8 (permalink)  
Старый 09.01.2009, 22:08
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Что значит синхронно? JavaScript однопоточный язык, одновременно все равно выполняться не будет.
Ответить с цитированием
  #9 (permalink)  
Старый 09.01.2009, 22:37
Аспирант
Отправить личное сообщение для Bajjy Посмотреть профиль Найти все сообщения от Bajjy
 
Регистрация: 25.09.2008
Сообщений: 33


настолько синхронно насколько может позволить JS
Ответить с цитированием
  #10 (permalink)  
Старый 11.01.2009, 11:50
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

такая функция будет тормозить браузер больше чем просто несколько с разными таймаутами...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация псведо "captcha" reutovo Общие вопросы Javascript 8 14.11.2008 18:20
Реализация тега <blink> СЕРГИЙ Общие вопросы Javascript 5 09.11.2008 21:25