我想知道setInterval()
在浏览器中运行的多个实例的周期性(每分钟)活动是否会告诉时间或更多的劳动密集型活动实际上是否会显着影响浏览器和/或操作系统的性能。
如果它们很明显,在什么样的时间范围内?在浏览器上打开此网页的时间是几小时、几天、几周?
谢谢,蒂姆
我想知道setInterval()
在浏览器中运行的多个实例的周期性(每分钟)活动是否会告诉时间或更多的劳动密集型活动实际上是否会显着影响浏览器和/或操作系统的性能。
如果它们很明显,在什么样的时间范围内?在浏览器上打开此网页的时间是几小时、几天、几周?
谢谢,蒂姆
回答你的问题,定义的函数setInterval()
是缓存的,所以除了性能损失之外(如果函数真的很密集),对浏览器/操作系统应该没有明显的影响。
更新:如果它们在最初几分钟内不明显(假设您的代码没有大量内存泄漏),它们应该能够无限期地运行。
真正的问题setInterval
是当您的任务花费的时间超过您给它的时间间隔时。我选择总是使用setTimeout
。但如果它是一个长间隔/简单的任务,setInterval 应该没问题。
// update a clock
function updateClock() {
$('#clock').text(new Date());
}
function updateClockSetTimeout(interval) {
updateClock();
setTimeout(updateClockSetTimeout, interval);
}
function updateClockSetInterval(interval) {
setInterval(updateClock, interval);
}
最好的方法是存储初始运行时间,以便您可以根据此任务实际完成的时间安排下一个运行时间。