|
|
|
| есть функция, которая вызывается по средством setInterval раз в 4 секунды и также она вызывается кликом пользователя на определенную кнопку, как сделать так, чтобы при одновременном вызове данной ф-ии из двух мест (1) setInterval (2) onclick -- приоритет отдавался вызову onclick, который делает пользователь?
а то пишу простенький чат и когда по ходу идет одновременный вызов сообщение отрезается и не пишется в файл | |
|
|
|
|
|
|
|
для: Blizard
(28.07.2009 в 00:49)
| | Положим, функция обновления содержимого называется у вас REL ().
По загрузке тела документа включаете интервал, но не просто так:
<body onload="setInterval (REL, 2345)">
| , а с "привязкой" к глобальной переменной, например, под именем myTimer, вот так:
<body onload="myTimer = setInterval (REL, 2345)">
|
В том месте, где юзер может самостоятельно вызвать внеочередное обновление, пропишите не просто вызов функции обновления , а с предварительной остановкой таймера и с последующим его запуском, т.е. так:
onclick="clearInterval (myTimer); REL (); setInterval (REL, 2345)"
|
PS. Подавляющее большинство из тех, кто здесь иногда внимает моим советам, почему-то, увидев мою запись , переделывают её на
setInterval ("REL ()", 2345)
| Видимо, полагают, что я ошибся, и меня, так сказать, "поправляют".
Предупреждаю - эти товарищи не правы. Записывать вызов только одной функции можно (и нужно!) именно ТАК, как указано у меня - безо всяких кавычек и скобочек.
Да, если надо исполнить несколько действий/операторов, например, не только вызвать функцию, но и показать окошко алерта, то тогда надо использовать кавычки. | |
|
|
|
|
|
|
|
для: Blizard
(28.07.2009 в 00:49)
| | сохранить предыдущий идентификатор таймера:
var predId = setInterval(…);
при вызове по onclick передавать к. л. параметр в функцию.
в функции: если параметр определён, убить таймер clearInterval(predId);
выполнить запрос пользователя, а затем снова перезапустить
predId = setInterval(…); | |
|
|
|