Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с таймером 
V
    Опции темы
voronov
Дата 19.10.2006, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.10.2006

Репутация: нет
Всего: нет



Проблема в следующем: необходимо создать 2 таймера вызывающих каждую секунду одну и ту же функцию но с разными параметрами
Пробовал так:
Код

function window.onload()
{

setInterval("f('a')",1000);

setInterval("f('b')",1000);

}

function f(param)
{
 window.status+=param;
}

но вместо ожидаемой в статусной строки: аbabab получаю abbaabba
В чем проблема? И если можно решить эту задачу по другому, то подскажите

Заранее спасибо за ответ

Это сообщение отредактировал(а) voronov - 19.10.2006, 01:17
PM MAIL   Вверх
GoodBoy
Дата 19.10.2006, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



сделай так:
Код
function window.onload() {
    setInterval("f('a')",1000);
    setTimeout("b()",500);
}

function b() {
    setInterval("f('b')",1000);
}

function f(param) {
    window.status+=param;
}


или ещё короче:

Код
function window.onload() {
    setInterval("f('a')",1000);
    setTimeout("setInterval('f(\"b\")',1000);",500);
}

function f(param){
    window.status+=param;
}




--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
AKS
Дата 19.10.2006, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



GoodBoy, 
Цитата

2 таймера вызывающих каждую секунду одну и ту же функцию но с разными параметрами

PM MAIL   Вверх
vasac
Дата 19.10.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Код

window.onload = function() {
  setInterval( ( function()  { f( "a" ); f( "b" ); return true; } ), 1000 );
  return true;
}

?
PM WWW   Вверх
voronov
Дата 19.10.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.10.2006

Репутация: нет
Всего: нет



Спасибо за ответы НО


Цитата

Код

window.onload = function() {
  setInterval( ( function()  { f( "a" ); f( "b" ); return true; } ), 1000 );
  return true;
}

Все бы хорошо, но мне нужны два разный идентификатора таймера (что бы завершать их по отдельности )

Цитата

Код

function window.onload() {
    setInterval("f('a')",1000);
    setTimeout("setInterval('f(\"b\")',1000);",500);
}

function f(param){
    window.status+=param;
}

Это я для примера привел, а по большому счету мне нужно каждую милисекунду вызывть функцию с разными параметрами 
Что вроде этого-т.е. создаем 4 таймера которые каждую 1млсек вызывают ф-цию f c соответсвующими параметрами
t1=setInterval("f('a')",1);
t2=setInterval("f('b')",1);
t3=setInterval("f('с')",1);
t4=setInterval("f('d')",1);




Это сообщение отредактировал(а) voronov - 19.10.2006, 16:42
PM MAIL   Вверх
vasac
Дата 19.10.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Может быть стоит пересмотреть логику внутри f() и ограничится одним таймером?
PM WWW   Вверх
voronov
Дата 19.10.2006, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.10.2006

Репутация: нет
Всего: нет



Цитата

Может быть стоит пересмотреть логику внутри f() и ограничится одним таймером? 


Я бы и рад, да боюсь что так не получится сделать

PM MAIL   Вверх
GIK
Дата 19.10.2006, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Цитата

Что вроде этого-т.е. создаем 4 таймера которые каждую 1млсек вызывают ф-цию f c соответсвующими параметрами

Если надо вызвать поочереди, с разными аргументами, то можно попробовать так:
Код

<html>
<head> 
<script>
var t1; var ee=new Array(1,2,3);
var i=0;

window.onload = function() {
  t1= window.setInterval((function(){f(ee[++i]);}), 1000);
}
function f(a){
alert(a);
}
</script>
</head>
<body>
</body>
</html>


Добавлено @ 18:20 
Цитата

Я бы и рад, да боюсь что так не получится сделать

Приведи задачу полностью, возможно можно обойтись одним таймером,но если надо несколько то возможно поможет такой вариант:
Код

<html>
<head> 
<script>
var t1, t2; var ee=new Array(1,2,3,4,5,6,7);
var i=0;

window.onload = function() {
  t1= window.setInterval((function(){f(ee[++i]);}), 1000);
  t2= window.setInterval((function(){f(ee[i+=1]);}), 1000);  
}
function f(a){
alert(a);
}
</script>
</head>
<body>
</body>
</html>


Добавлено @ 18:22 
Как сказал vasac, может и на самом деле можно изменить логику тела функции, например ты можеш создать несколько таймеров и создать определенные действия над посылаемыми агрументами.  


Это сообщение отредактировал(а) GIK - 19.10.2006, 18:27


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
12345c
Дата 19.10.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Цитата(voronov @  19.10.2006,  16:29 Найти цитируемый пост)
Это я для примера привел, а по большому счету мне нужно каждую милисекунду вызывать функцию с разными параметрами 
Об этом гарантированно можно забыть, потому что изначально JS вообще ориентировался на таймер со скоростью 170 мс (системный), и меньший интервал было бесполезно давать. В последних версиях бр-ров видим, что малые интервалы помогают увеличить скорость, но обработка каждого события занимает время, соизмеримое с несколькими мс. И неизвестно, как планировщик процессов в JS распределит эти скудные ресурсы между очередью процессов. Скорее всего, они будут занимать простую очередь, но период отработки будет несолько мс или больше. В примере темы мы видим как раз результат работы планировщика, когда встречаются 2 процесса, претендующие на обработку и как-то разделяют общий ресурс - self.status . Проектирование поэтому  разумно начать с постановки "от задачи". Первый вопрос: что мы должны видеть. Ответ: мониторинг событий каждую секунду. Поэтому строим монитор событий - один процесс с нужным интервалом, который опрашивает переменные, изменяемые другими процессами, которые вы хотите независимо отключать. Любое другое решение будет нарываться на мелкие нестыковки и недостатки планирования событий. Даже сдвиг на 150-200 мс не могу предложить, потому что и он рано или поздно может сорваться даже под влиянием реального процесса в компьютере, занимающего время и не входящего в браузер.
PM WWW   Вверх
voronov
Дата 19.10.2006, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.10.2006

Репутация: нет
Всего: нет



Всем спасибо за советы...скорее всего придется менять логику внутри вызываемой функции
PM MAIL   Вверх
AKS
Дата 19.10.2006, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



voronov, 
А что вообще нужно делать этим функциям? Неужели нужен такой короткий интервал времени? Можно было бы заменить все таймаутами (если б не короткие интервалы)...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0511 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.