Я пытаюсь понять этот код:понимание автоматического обновления страницы в JavaScript
function setIdle(cb, seconds) {
var timer;
var interval = seconds * 1000;
function refresh() {
clearInterval(timer);
timer = setTimeout(cb, interval);
};
$(document).on('keypress, click', refresh);
refresh();
}
setIdle(function() {
location.href = location.href;
}, 5);
setIdle
принимает два аргумента. Внутри своей функции он имеет функцию refresh
, которая очищает таймер от функции Timeout
. Теперь каждый раз, когда происходит событие (click
, keypress
) refresh()
получает вызов.
, а затем, наконец, эта функция получает вызов, передаваемый другой функцией, и значение int (5
), которое позже будет количеством секунд для таймера. В этой другой функции, которая позже представлена через cb
, страница будет обновлена (location.href = location.href;
).
Это вызывает автоматическое обновление каждые 5 секунд.
Так что теперь я не понимаю, если я ставлю дополнительную функцию:
setIdle(function() {
console.log('hi');
}, 1);
Почему вторая функция вызывается только один раз, а не каждый второй, как другой?
Возможно, вам понравится аналогичный вопрос: [Обнаружение простоя в JavaScript изящно] (http://stackoverflow.com/questions/667555/detecting-idle-time-in-javascript-elegantly). – Roberto