JavaScript 定时器详解:setTimeout 与 setInterval 的使用及最佳实践

作者:青柠时间:2026-10-26 19:07:15浏览:282

本文深入解析 JavaScript 中的两种核心定时器机制:超时调用(setTimeout)与间歇调用(setInterval)。详细说明了它们的参数、返回值及取消方法,并通过代码示例展示了如何创建和清除定时器。文章最后指出,由于间歇调用可能导致的执行堆积问题,推荐使用递归的超时调用作为更稳健的替代方案,以确保代码执行的准确性和时序控制。

超时调用 setTimeout 的使用方法

1. 超时调用 setTimeout()


setTimeout() 方法接收两个参数:第一个是待执行的函数,第二个是延迟时间(单位为毫秒),该方法会返回一个唯一的数值 ID。


代码如下:

 
setTimeout( function () {
alert("你好!");
},1000);

在调用之前,可以通过 clearTimeout() 来取消超时调用,该方法接收一个参数,即超时调用的 ID。


代码如下:

 
var timeOutId = setTimeout( function () {
alert("你好!");
},1000);
clearTimeout(timeOutId);

间歇调用 setInterval 的使用方法

2. 间歇调用 setInterval()


setInterval() 方法同样接收两个参数:第一个是待执行的函数,第二个是间隔时间(单位为毫秒),该方法也会返回一个唯一的数值 ID。


代码如下:

 
setInterval( function () {
alert("你好!");
},1000);

要取消间歇调用,可以使用 clearInterval(),该方法接收一个参数,即间歇调用的 ID。


代码如下:

 
var intervalId = null;
var span = document.createElement("span"); //创建span节点
span.Id="time"; //设置span的id
document.body.appendChild(span); //body内添加span
function incrementNumber () {
var now = new Date();
var timeStr = now.toLocaleTimeString();
span.innerText =timeStr;
num++;
if (num == 10) {
clearInterval(intervalId); //十秒后时间不变了
} 
} 
intervalId = setInterval(incrementNumber,1000);

使用超时调用替代间歇调用的最佳实践

3. 尽量用超时调用替代间歇调用


代码如下:

 
var num = 0;
var max = 10;
function incrementNumber() {
num++;
if (num<max) {
setTimeout(incrementNumber,1000);
} else {
alert("OK");
} 
} 
setTimeout(incrementNumber,1000);
作者最新文章