JavaScript 提供了两种主要的调度方法,允许你在特定时间后或在固定间隔执行代码。
setTimeout 方法用于在指定的毫秒数后执行一次函数或代码片段。
let timerId = setTimeout(func|code, [delay], [arg1], [arg2], ...);
func|code:要执行的函数或代码字符串(通常使用函数)delay:延迟的毫秒数(默认为0)arg1, arg2...:传递给函数的参数(IE9及以下不支持)// 3秒后显示提示
setTimeout(() => {
alert('3秒已过');
}, 3000);
// 带参数的函数
function sayHi(phrase, who) {
alert(phrase + ', ' + who);
}
setTimeout(sayHi, 1000, "Hello", "John"); // Hello, John
使用 clearTimeout 可以取消尚未执行的 setTimeout:
let timerId = setTimeout(...);
clearTimeout(timerId);
setInterval 方法与 setTimeout 类似,但会重复执行代码,直到被清除。
let timerId = setInterval(func|code, [delay], [arg1], [arg2], ...);
参数与 setTimeout 相同。
// 每2秒重复一次
let timerId = setInterval(() => {
alert('每2秒出现一次');
}, 2000);
// 5秒后停止
setTimeout(() => {
clearInterval(timerId);
alert('停止');
}, 5000);
使用 clearInterval 可以停止 setInterval 的重复执行:
let timerId = setInterval(...);
clearInterval(timerId);
作为 setInterval 的替代方案,可以使用嵌套的 setTimeout:
let timerId = setTimeout(function tick() {
alert('tick');
timerId = setTimeout(tick, 2000); // (*)
}, 2000);
这种方法比 setInterval 更灵活,可以确保每次执行之间的间隔更精确,因为下一次调用是在前一次调用完成后才计划的。
setTimeout(func, 0) 或 setTimeout(func) 表示"尽快"执行函数,但会在当前脚本执行完毕后调用。
setTimeout(() => {
alert("World");
});
alert("Hello");
// 输出顺序: Hello → World
setTimeout(func, delay, ...args) — 在 delay 毫秒后执行 func 一次setInterval(func, delay, ...args) — 每隔 delay 毫秒重复执行 funcclearTimeout/clearInterval — 取消相应的调度setTimeout 比 setInterval 更灵活可靠setTimeout(func, 0)) 用于在当前脚本执行完后"尽快"调用函数这些调度方法是 JavaScript 异步编程的基础工具,广泛应用于动画、轮询、延迟操作等场景。
热门推荐:
0