定时器方法详解
1. **setTimeout
(延迟执行)**
-
语法
const timerId = setTimeout(callback, delay, [arg1, arg2, ...]);
callback
:延迟后执行的函数delay
:延迟时间(毫秒,默认 0)arg1~argN
:传递给回调函数的参数
-
特性
- 单次执行,超时后自动终止
- 返回唯一标识符
timerId
,用于取消定时器
-
示例
// 2秒后输出 "Delayed Execution" setTimeout(() => console.log("Delayed Execution"), 2000);
2. **setInterval
(周期性执行)**
-
语法
const intervalId = setInterval(callback, delay, [arg1, arg2, ...]);
-
特性
- 按固定间隔重复执行
- 需手动调用
clearInterval(intervalId)
终止
-
示例
// 每秒更新计数器 let count = 0; const timer = setInterval(() => { console.log(++count); if (count >= 5) clearInterval(timer); // 执行5次后停止 }, 1000);
3. 清除定时器
- **
clearTimeout(timerId)
**:终止setTimeout
定时器 - **
clearInterval(intervalId)
**:终止setInterval
定时器
防抖与节流
// 防抖:延迟执行直到停止输入
const debounce = (fn, delay) => {
let timer;
return (...args) => {
clearTimeout(timer);
timer = setTimeout(() => fn(...args), delay);
};
};
// 节流:固定间隔执行
const throttle = (fn, interval) => {
let last = 0;
return (...args) => {
const now = Date.now();
if (now - last >= interval) {