js实现settimeout
使用 setTimeout 实现延迟执行
setTimeout 是 JavaScript 中用于在指定时间后执行代码的函数。其基本语法如下:
setTimeout(function, delay, arg1, arg2, ...)
function:要执行的函数或代码字符串(不推荐使用字符串)。delay:延迟时间,单位为毫秒(默认值为 0)。arg1, arg2, ...:可选参数,传递给函数的参数。
基本用法
setTimeout(() => {
console.log('这段代码将在 1 秒后执行');
}, 1000);
传递参数
可以向延迟执行的函数传递参数:

function greet(name) {
console.log(`Hello, ${name}!`);
}
setTimeout(greet, 2000, 'Alice');
清除定时器
setTimeout 返回一个定时器 ID,可用于取消尚未执行的代码:

const timerId = setTimeout(() => {
console.log('这段代码不会执行');
}, 3000);
clearTimeout(timerId);
递归实现周期性执行
虽然 setInterval 更适合周期性执行,但 setTimeout 也可以实现类似效果:
function repeat() {
console.log('周期性执行');
setTimeout(repeat, 1000);
}
setTimeout(repeat, 1000);
与 Promise 结合
可以将 setTimeout 封装在 Promise 中,实现异步延迟:
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function example() {
console.log('开始');
await delay(2000);
console.log('2 秒后');
}
example();
注意事项
- 延迟时间是最小等待时间,实际执行时间可能更长(受 JavaScript 事件循环影响)。
- 在 Node.js 和浏览器环境中都可用,但具体实现可能有细微差异。
- 避免在性能敏感的代码中过度使用,频繁的定时器会影响性能。






