返回
JavaScript Timer: 揭秘setTimeout()和setInterval()的幕后故事
前端
2023-12-22 07:53:13
定时器概述
在JavaScript中,定时器是利用JavaScript引擎执行队列来实现的。当你在代码中调用定时器函数时,实际上是在告诉JavaScript引擎在指定的延迟时间后执行某个函数。JavaScript引擎会将这个函数及其延迟时间放入执行队列中,并在适当的时候执行它。
setTimeout()与setInterval()
setTimeout()和setInterval()都是JavaScript中的核心定时器函数。它们都有一个共同点,那就是都可以指定一个函数和一个延迟时间,但它们在执行方式上却存在着一些关键差异。
setTimeout()
setTimeout()函数的作用是安排一个函数在指定的延迟时间后执行一次。也就是说,它只执行一次。
语法:
setTimeout(function, milliseconds);
- function:要执行的函数。
- milliseconds:延迟时间,单位是毫秒。
示例:
setTimeout(function() {
console.log("Hello, world!");
}, 3000); // 3秒后执行
setInterval()
setInterval()函数的作用是安排一个函数在指定的延迟时间后重复执行。也就是说,它会一直执行,直到你手动清除它。
语法:
setInterval(function, milliseconds);
- function:要执行的函数。
- milliseconds:延迟时间,单位是毫秒。
示例:
var intervalId = setInterval(function() {
console.log("Hello, world!");
}, 3000); // 每3秒执行一次
// 清除定时器
clearInterval(intervalId);
repeat()函数
现在,我们来实现一个repeat()函数,使每3秒打印一个字符串,总共执行4次。
function repeat(string, times, delay) {
var i = 0;
var intervalId = setInterval(function() {
console.log(string);
i++;
if (i >= times) {
clearInterval(intervalId);
}
}, delay);
}
repeat("Hello, world!", 4, 3000); // 每3秒打印一次"Hello, world!",总共打印4次
比较
特性 | setTimeout() | setInterval() |
---|---|---|
执行次数 | 一次 | 重复执行 |
清除方式 | 不需要 | 需要手动清除 |
常用场景 | 延迟执行一次函数 | 定期执行一次函数 |
总结
在本文中,我们探讨了JavaScript中的定时器,特别是setTimeout()和setInterval()函数。我们了解了它们的异同,并通过手写repeat()函数展示了如何每3秒打印一个字符串,总共执行4次。希望这些知识对你的JavaScript开发有所帮助。