Следующий скрипт должен выполнить следующие действия:Странное поведение SetTimeout Javascript
На странице загрузки, он будет установлен тайм-аут в 20 секунд, а затем желаемое содержание будет обновляться в Ajax вызова автоматически. Если пользователь нажмет кнопку с надписью RELOAD, она вызовет функцию reloadContent()
и тем самым очистит тайм-аут и установит ее снова.
В основном, это должно перезапустить таймаут, если пользователь вручную перезагрузился, чтобы избежать слишком близких вызовов.
Он работает наполовину, потому что таймер, кажется, сбрасывается, но reloadContentTimeout()
будет выполнять через 10 секунд действия, загруженные вручную, что составляет половину таймаута.
Я что-то не так?
Спасибо!
/**
* Reload content
*/
function reloadContent(elementId) {
$(elementId).load(window.location.href+' '+elementId+' > *');
clearTimeout(timeoutId);
reloadContentTimeout(false);
}
/**
* Reload content every X seconds (20)
*/
var timeoutId;
function reloadContentTimeout(now)
{
now = (typeof now === 'undefined' ? true : now);
if(now) {
reloadContent('#table-content');
}
timeoutId = setTimeout(reloadContentTimeout, 1000 * 20);
}
reloadContentTimeout(false);
Действительно, я сделал console.log и увидел, что он создает 2 таймаута и очищает только последние. Постановка 'else' решила его. Thansk! – JorgeeFG