【发布时间】:2016-04-14 16:02:51
【问题描述】:
我正在尝试理解这段代码:
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);
为什么第二个函数只调用一次,而不是像另一个一样每秒调用一次?
【问题讨论】:
-
您可能会发现类似的问题很有趣:Detecting idle time in JavaScript elegantly。
标签: javascript timeout settimeout