📅  最后修改于: 2023-12-03 15:34:57.411000             🧑  作者: Mango
在 JavaScript 中,setTimeout() 函数用于在指定的时间间隔后调用一个函数。
它接受两个参数:
setTimeout() 最常见的用法是在定时器中执行一段代码,例如:
setTimeout(function() {
// 将会在 1000 毫秒 (1 秒) 后执行
console.log('Hello World!');
}, 1000);
有时候,使用 setTimeout() 函数时会出现这样的错误:在刷新浏览器后,setTimeout() 中的代码被抛出或者不再执行。
这是因为 window 对象在刷新页面时会被销毁并重新创建。如果一个 setTimeout() 仍然保持着对原始 window 对象的引用,它就会指向一个被销毁的对象,这导致了 setTimeout() 中的代码不再执行。
有两种方法可以解决这个问题:
使用 setInterval() 函数。与 setTimeout() 一样,setInterval() 也可以在一个指定的时间间隔后执行一段代码。与 setTimeout() 不同的是,setInterval() 会重复执行这个代码,直到被清除或页面被卸载。因此,setInterval() 可以保持对正确的 window 对象的引用,并且不会在刷新页面后被抛出。
在使用 setTimeout() 函数时,确保在页面卸载前使用 clearTimeout() 函数清除所有的计时器。
var timer;
function performAction() {
// 这里是要执行的代码
console.log('Hello World!');
// 清除计时器,以确保不会被抛出
clearTimeout(timer);
}
// 在 1000 毫秒 (1 秒) 后执行 performAction()
timer = setTimeout(performAction, 1000);
// 当页面被卸载时清除计时器
window.addEventListener('beforeunload', function() {
clearTimeout(timer);
});
setTimeout() 函数在 JavaScript 中是一个常用的工具。在使用它的时候,一定要注意在页面被卸载时清除所有的计时器,或者使用 setInterval() 函数代替 setTimeout()。