定时器
setInterval()
和 setTimeout()
可以用来注册在指定时间后单次或重复调用的函数,通常用来实现定时器。因为它们都是客户端 JavaScript 中重要的全局函数,所以定义为 Window 对象的方法。
Window 对象的 setTimeout()
方法用来实现一个函数在指定毫秒数之后运行,该方法会返回一个值,将其传递给 clearTimeout()
方法可以取消这个函数的执行。
setInterval()
和 setTimeout()
一样,只不过这个方法会在指定毫秒数的间隔里重复调用回调函数:
setInterval(updateClock, 60000); // 每隔60秒调用一次updateClock()
setInterval()
也返回一个值,这个值传递给 clearInterval()
可以取消回调函数的调用。
下面我们来看一个定时器函数的使用示例:
/**
* 定时器函数
* @param f
* @param start
* @param interval
* @param end
*/
function invoke(f, start, interval, end) {
if (!start) {
start = 0;
}
if (arguments.length <= 2) {
setTimeout(f, start);
} else {
setTimeout(repeat, start);
function repeat() {
var h = setInterval(f, interval);
if (end) {
setTimeout(function () {
clearInterval(h);
}, end);
}
}
}
}
由于历史原因,setTimeout()
和 setInterval()
的第一个参数可以是字符串,该字符串会在指定的超时时间或间隔时间后进行求值(相当于执行 eval()
函数)。
注:如果将
setTimeout()
的第二个参数设置为 0 毫秒,那么指定的回调函数不会立即执行,而是放到队列中,直到前面处于等待状态的事件处理函数全部执行完成后再执行。
No Comments