JavaScript函数驱动CPU利用率到100%
JavaScript function driving CPU utilization to 100%
我有一系列图像,其中图形温度,湿度等。镜像文件名不变,但镜像本身每5分钟更新一次。我想刷新图像,而不必重新加载整个页面。
下面的函数完成了这一点,但是在几个周期之后,处理器利用率跃升到100%。我已经注释掉了页面上的所有其他内容,所以我确信使用JavaScript函数刷新图像的尝试是原因。
我是JavaScript的新手,不明白为什么会发生这种情况,也不知道如何解决它。如有任何帮助,不胜感激。
function dispGraphs() {
document.getElementById("tempChart").src="images/tempInside.png?t=" + Math.random();
document.getElementById("humChart").src="images/humidityInside.png?t=" + Math.random();
document.getElementById("presChart").src="images/pressureInside.png?t=" + Math.random();
document.getElementById("lightChart").src="images/light.png?t=" + Math.random();
setInterval(dispGraphs, 300000);
}
这个函数被调用:
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', dispGraphs);
</script>
不应该在函数内部,而应该在函数外部。
setInterval(dispGraphs, 300000);
在每个循环中,您再次调用它,并以无限次调用函数dispGraphs
结束
用setTimeout
代替setInterval
。
function dispGraphs() {
document.getElementById("tempChart").src="images/tempInside.png?t=" + Math.random();
document.getElementById("humChart").src="images/humidityInside.png?t=" + Math.random();
document.getElementById("presChart").src="images/pressureInside.png?t=" + Math.random();
document.getElementById("lightChart").src="images/light.png?t=" + Math.random();
setTimeout(dispGraphs, 300000);
}
CPU
达到100%,因为每次调用dispGraphs
函数时都会创建一个新的间隔,每5分钟调用一次该函数。所以5分钟后,你将有2个间隔(第一次调用时创建的间隔和5分钟后创建的间隔),10分钟后,你将有4个间隔,每个间隔每5分钟调用一次函数。所以间隔的数量与经过的时间成指数关系nrIntervals = 2 ^ (minutesPassed/5)
(或类似的东西)。
使用setTimeout
你可以确保你的函数每5分钟只被调用一次。
function dispGraphs() {
setInterval(function () {
document.getElementById("tempChart").src="images/tempInside.png?t=" + Math.random();
document.getElementById("humChart").src="images/humidityInside.png?t=" + Math.random();
document.getElementById("presChart").src="images/pressureInside.png?t=" + Math.random();
document.getElementById("lightChart").src="images/light.png?t=" + Math.random();
}, 300000);
}
相关文章:
- 有没有写100以上的索引的捷径
- 宽度为100%的CSS元素位于视口之外
- 如何在jQuery Mobile中设置100%宽度的输入类型日期
- 一旦总和达到100,就禁用其余的数字框
- 100%的父图像.父级是固定位置的
- 普通JS:使80%宽度元素100%IF包含一个图像
- 如何使画布的宽度达到100%
- 使用css中设置的表宽度:100%,使表内容适合宽度
- 动画滚动100%(水平)
- iframe上的100%自动高度
- ExtJS使网格高度达到100%
- 如何让iframe填充整个页面100%和顶部:4px
- 使页面高度为浏览器的100%
- 将画布imageData中的像素更改为hsl(60、100%、50%)
- JavaScript 100 Doors
- 为什么身高不是100%
- 如何将 dojox.mobile.View 设置为 100% 的高度
- 3 行布局,100% 高度:1 自动,1 自动滚动,1 固定
- 试图使循环退出,但它目前只是继续循环100次
- JavaScript函数驱动CPU利用率到100%