Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Распараллелить вызов одной ф-ии
 
 автор: Blizard   (28.07.2009 в 00:49)   письмо автору
 
 

есть функция, которая вызывается по средством setInterval раз в 4 секунды и также она вызывается кликом пользователя на определенную кнопку, как сделать так, чтобы при одновременном вызове данной ф-ии из двух мест (1) setInterval (2) onclick -- приоритет отдавался вызову onclick, который делает пользователь?
а то пишу простенький чат и когда по ходу идет одновременный вызов сообщение отрезается и не пишется в файл

  Ответить  
 
 автор: PAT   (28.07.2009 в 01:09)   письмо автору
 
   для: Blizard   (28.07.2009 в 00:49)
 

Положим, функция обновления содержимого называется у вас REL ().
По загрузке тела документа включаете интервал, но не просто так:
<body onload="setInterval (REL, 2345)">
, а с "привязкой" к глобальной переменной, например, под именем myTimer, вот так:
<body onload="myTimer = setInterval (REL, 2345)">

В том месте, где юзер может самостоятельно вызвать внеочередное обновление, пропишите не просто вызов функции обновления
onclick="REL ()"
, а с предварительной остановкой таймера и с последующим его запуском, т.е. так:
onclick="clearInterval (myTimer); REL (); setInterval (REL, 2345)"


PS. Подавляющее большинство из тех, кто здесь иногда внимает моим советам, почему-то, увидев мою запись
setInterval (REL, 2345)
, переделывают её на
setInterval ("REL ()", 2345)
Видимо, полагают, что я ошибся, и меня, так сказать, "поправляют".
Предупреждаю - эти товарищи не правы. Записывать вызов только одной функции можно (и нужно!) именно ТАК, как указано у меня - безо всяких кавычек и скобочек.
Да, если надо исполнить несколько действий/операторов, например, не только вызвать функцию, но и показать окошко алерта, то тогда надо использовать кавычки.

  Ответить  
 
 автор: x64   (28.07.2009 в 12:24)   письмо автору
 
   для: Blizard   (28.07.2009 в 00:49)
 

сохранить предыдущий идентификатор таймера:
var predId = setInterval(…);

при вызове по onclick передавать к. л. параметр в функцию.
в функции: если параметр определён, убить таймер clearInterval(predId);
выполнить запрос пользователя, а затем снова перезапустить
predId = setInterval(…);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования