hand
_1_11_154
4
返回栏目
0k
2k
1k
2k
1k
1k
1k
2k
2k
2k
1k
2k
1k
2k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
2k
1k
2k
1k
1k
1k
1k
1k
1k
1k
2k
2k
1k
1k
1k
2k
1k
1k
2k
2k
1k
1k
1k
2k
1k
1k
2k
2k
1k
2k
1k
1k
2k
2k
2k
3k
3k
2k
3k
2k
3k
3k
3k
1k
2k
3k
2k
2k
3k
3k
2k
2k
6k
3k
2k
2k
5k
3k
4k
3k
3k
2k
4k
3k
3k
2k
3k
3k
1k
4k
4k
4k
2k
5k
3k
2k
3k
4k
3k
3k
4k
2k
3k
3k
4k
2k
2k
3k
4k
3k
3k
2k
5k
2k
3k
3k
3k
3k
2k
3k
3k
3k
2k
2k
2k
2k
3k
2k
2k
2k
3k
2k
2k
2k
2k
2k
2k
0.1k
0.2k
3k
2k
3k
2k
0.1k
2k
2k
4k
2k
2k
1k
2k
2k
3k
3k
3k
3k
2k
2k
3k
3k
3k
4k
3k
3k
4k
3k
2k
2k
3k
3k
3k
3k
3k
3k
2k
3k
3k
4k
4k
3k
3k
2k
2k
3k
2k
2k
1k
2k
3k
1k
2k
2k
2k
2k
2k
2k
2k
2k
2k
4k
2k
3k
2k
1k
2k
2k
2k
2k
2k
3k
2k
3k
1k
2k
2k
2k
0k
2k
2k
2k
2k
2k
2k
2k
3k
2k
2k
1k
1k
3k
2k
3k
1k
2k
1k
2k
2k
2k
2k
3k
1k
3k
2k
2k
2k
2k
2k
2k
1k
2k
2k
4k
3k
3k
2k
2k
2k
2k
2k
2k
4k
3k
3k
3k
2k
2k
2k
2k
2k
2k
3k
4k
返回前端 - Javascript栏目
作者:
贺及楼
成为作者
更新日期:2025-02-21 20:11:02
在前端开发中,setTimeout
是一个非常实用的定时器函数,它允许我们在指定的时间后执行一段代码。然而,有时候我们可能需要提前终止这个定时器的执行,这就涉及到清除定时器的操作。本文将详细介绍 setTimeout
以及清除它的方法。
setTimeout
基础setTimeout
是 JavaScript 中的一个全局函数,用于在指定的毫秒数后执行一次回调函数。其基本语法如下:
let timeoutId = setTimeout(callback, delay, param1, param2,...);
callback
:在延迟时间后要执行的函数。delay
:延迟的毫秒数,即多久后执行回调函数。param1, param2,...
:可选参数,传递给回调函数的参数。
function sayHello(name) {
console.log(`Hello, ${name}!`);
}
let timer = setTimeout(sayHello, 2000, 'John');
console.log('This will be printed first.');
在这个例子中,sayHello
函数会在 2000 毫秒(即 2 秒)后执行,而 console.log('This will be printed first.')
会立即执行。
setTimeout
定时器clearTimeout
函数要清除一个 setTimeout
定时器,我们可以使用 clearTimeout
函数。它接受一个参数,即 setTimeout
返回的定时器 ID。语法如下:
clearTimeout(timeoutId);
timeoutId
:setTimeout
函数返回的唯一标识符。
function sayHello(name) {
console.log(`Hello, ${name}!`);
}
let timer = setTimeout(sayHello, 2000, 'John');
// 在 1 秒后清除定时器
setTimeout(() => {
clearTimeout(timer);
console.log('The timer has been cleared.');
}, 1000);
在这个例子中,原本 sayHello
函数应该在 2 秒后执行,但在 1 秒后我们调用了 clearTimeout
函数,将定时器清除,因此 sayHello
函数不会执行。
在一些情况下,我们可能会根据用户的操作来决定是否执行某个定时任务。例如,在一个搜索框中,用户输入内容后,我们希望延迟一段时间再进行搜索,以减少不必要的请求。如果用户在延迟时间内继续输入,我们可以清除之前的定时器,重新设置一个新的定时器。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Search Box Example</title>
</head>
<body>
<input type="text" id="searchInput" placeholder="Search...">
<script>
let searchTimer;
const searchInput = document.getElementById('searchInput');
searchInput.addEventListener('input', () => {
// 清除之前的定时器
clearTimeout(searchTimer);
// 设置新的定时器
searchTimer = setTimeout(() => {
const searchTerm = searchInput.value;
console.log(`Searching for: ${searchTerm}`);
}, 500);
});
</script>
</body>
</html>
在一些游戏或交互场景中,我们可能会设置一个限时操作。如果用户在规定时间内没有完成操作,我们可以执行相应的提示或处理。如果用户提前完成操作,我们可以清除定时器。
let countdownTimer;
let timeLeft = 10;
function startCountdown() {
countdownTimer = setTimeout(() => {
if (timeLeft > 0) {
console.log(`Time left: ${timeLeft} seconds`);
timeLeft--;
startCountdown();
} else {
console.log('Time is up!');
}
}, 1000);
}
// 用户提前完成操作,清除定时器
function completeTask() {
clearTimeout(countdownTimer);
console.log('Task completed!');
}
startCountdown();
// 模拟用户提前完成操作
setTimeout(completeTask, 3000);
函数 | 作用 | 语法 |
---|---|---|
setTimeout |
在指定的毫秒数后执行一次回调函数 | let timeoutId = setTimeout(callback, delay, param1, param2,...); |
clearTimeout |
清除 setTimeout 定时器 |
clearTimeout(timeoutId); |
通过合理使用 setTimeout
和 clearTimeout
函数,我们可以更好地控制代码的执行时间,避免不必要的代码执行,提高代码的性能和用户体验。希望本文能帮助你更好地理解和使用 setTimeout
以及清除定时器的方法。
前端 - Javascript
整章节共299节
快分享给你的小伙伴吧 ~