在 JavaScript 中,实现延时执行的核心方法是 setTimeout 和 setInterval,以下是具体用法和注意事项:
1. 延迟单次执行:setTimeout2. 重复间隔执行:setInterval3. 取消延时/间隔:clearTimeout 和 clearInterval- 作用:提前终止未执行的延迟或重复任务。
- 示例:const timeoutId = setTimeout(() => console.log("不会执行"), 1000);clearTimeout(timeoutId); // 立即取消const intervalId = setInterval(() => console.log("重复中"), 300);clearInterval(intervalId); // 停止重复
4. 替代方案:async/await + Promise- 适用场景:需要更灵活的异步控制(如等待多个延时)。
- 示例:function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms));}async function run() { console.log("开始"); await delay(1500); // 等待 1.5 秒 console.log("1.5 秒后");}run();
注意事项- 精度问题:浏览器最小延迟通常为 4ms(HTML5 标准),即使设为 0 也会排队。
- 内存泄漏:未清除的 setInterval 会持续占用资源,需在组件卸载或页面离开时清理。
- 异步上下文:延时回调中的错误需用 try/catch 或 .catch() 处理(Promise 场景)。
总结- 单次延迟 → setTimeout + clearTimeout
- 重复执行 → setInterval + clearInterval
- 现代替代 → async/await + Promise 实现链式控制
根据需求选择合适方法,并始终记得清理不再需要的定时器!