setTimeout
是 JavaScript 中的一个函数,用于在指定的毫秒数后执行一次回调函数。它返回一个表示定时器的唯一标识符(通常是数字),这个标识符可以用于取消定时器。
clearTimeout
取消定时任务。setTimeout
实现周期性任务。应用场景包括但不限于:
问题1:定时器未触发
requestAnimationFrame
来处理动画相关的定时任务。问题2:定时器触发多次
setTimeout
,且没有适当的退出条件。setTimeout
都有明确的逻辑来避免重复设置。let timeoutId = setTimeout(() => {
console.log('This runs after 3 seconds');
}, 3000);
// 如果需要取消定时器
clearTimeout(timeoutId);
function repeatTask() {
console.log('Running task...');
setTimeout(repeatTask, 1000); // 每秒执行一次
}
repeatTask(); // 启动循环任务
假设你想实现一个按钮,点击后重新开始计时:
<button id="resetButton">Reset Timer</button>
let timeoutId;
const delay = 5000; // 5秒
function startTimer() {
timeoutId = setTimeout(() => {
alert('Timer finished!');
}, delay);
}
document.getElementById('resetButton').addEventListener('click', () => {
clearTimeout(timeoutId); // 清除之前的定时器
startTimer(); // 重新开始计时
});
startTimer(); // 初始启动定时器
在这个例子中,每次点击按钮都会清除之前的定时器并重新设置一个新的定时器,从而实现了“重置”的效果。
setTimeout
是一个非常有用的工具,但在使用时需要注意避免常见的陷阱,如未及时清除定时器导致的资源泄露或不必要的重复执行。合理使用 clearTimeout
可以帮助管理定时器的生命周期。
领取专属 10元无门槛券
手把手带您无忧上云