| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Проблема с таймером |
| Автор: voronov 19.10.2006, 01:14 | ||
| Проблема в следующем: необходимо создать 2 таймера вызывающих каждую секунду одну и ту же функцию но с разными параметрами Пробовал так:
но вместо ожидаемой в статусной строки: аbabab получаю abbaabba В чем проблема? И если можно решить эту задачу по другому, то подскажите Заранее спасибо за ответ |
| Автор: GoodBoy 19.10.2006, 10:02 | ||||
сделай так:
или ещё короче:
|
| Автор: AKS 19.10.2006, 11:06 | ||
GoodBoy,
|
| Автор: vasac 19.10.2006, 13:24 | ||
? |
| Автор: voronov 19.10.2006, 16:29 | ||||||||
Спасибо за ответы НО
Все бы хорошо, но мне нужны два разный идентификатора таймера (что бы завершать их по отдельности )
Это я для примера привел, а по большому счету мне нужно каждую милисекунду вызывть функцию с разными параметрами Что вроде этого-т.е. создаем 4 таймера которые каждую 1млсек вызывают ф-цию f c соответсвующими параметрами t1=setInterval("f('a')",1); t2=setInterval("f('b')",1); t3=setInterval("f('с')",1); t4=setInterval("f('d')",1); |
| Автор: vasac 19.10.2006, 16:46 |
| Может быть стоит пересмотреть логику внутри f() и ограничится одним таймером? |
| Автор: voronov 19.10.2006, 17:22 | ||
Я бы и рад, да боюсь что так не получится сделать |
| Автор: GIK 19.10.2006, 18:15 | ||||||||
Если надо вызвать поочереди, с разными аргументами, то можно попробовать так:
Добавлено @ 18:20
Приведи задачу полностью, возможно можно обойтись одним таймером,но если надо несколько то возможно поможет такой вариант:
Добавлено @ 18:22 Как сказал vasac, может и на самом деле можно изменить логику тела функции, например ты можеш создать несколько таймеров и создать определенные действия над посылаемыми агрументами. |
| Автор: 12345c 19.10.2006, 18:41 |
| Об этом гарантированно можно забыть, потому что изначально JS вообще ориентировался на таймер со скоростью 170 мс (системный), и меньший интервал было бесполезно давать. В последних версиях бр-ров видим, что малые интервалы помогают увеличить скорость, но обработка каждого события занимает время, соизмеримое с несколькими мс. И неизвестно, как планировщик процессов в JS распределит эти скудные ресурсы между очередью процессов. Скорее всего, они будут занимать простую очередь, но период отработки будет несолько мс или больше. В примере темы мы видим как раз результат работы планировщика, когда встречаются 2 процесса, претендующие на обработку и как-то разделяют общий ресурс - self.status . Проектирование поэтому разумно начать с постановки "от задачи". Первый вопрос: что мы должны видеть. Ответ: мониторинг событий каждую секунду. Поэтому строим монитор событий - один процесс с нужным интервалом, который опрашивает переменные, изменяемые другими процессами, которые вы хотите независимо отключать. Любое другое решение будет нарываться на мелкие нестыковки и недостатки планирования событий. Даже сдвиг на 150-200 мс не могу предложить, потому что и он рано или поздно может сорваться даже под влиянием реального процесса в компьютере, занимающего время и не входящего в браузер. |
| Автор: voronov 19.10.2006, 19:28 |
| Всем спасибо за советы...скорее всего придется менять логику внутри вызываемой функции |
| Автор: AKS 19.10.2006, 19:46 |
| voronov, А что вообще нужно делать этим функциям? Неужели нужен такой короткий интервал времени? Можно было бы заменить все таймаутами (если б не короткие интервалы)... |