定时器


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 毫秒,那么指定的回调函数不会立即执行,而是放到队列中,直到前面处于等待状态的事件处理函数全部执行完成后再执行。


点赞 取消点赞 收藏 取消收藏

<< 上一篇: 客户端框架

>> 下一篇: 浏览器定位和导航