我打算 Build 多个计时器 . 我首先使用以下代码构建一个简单的时钟 .
问题是,时钟将运行几分钟,网站将破裂,我认为这是由于内存不足 .
当我在console.log中输出 . 看起来命令每秒运行一次以上 . console.log行的计数器会说2,4,8,16,32,64等等,快速加倍到一些天文数字 . 并且该网站将在几分钟内变得无响应 .
这是代码的效率问题吗?或者使用java脚本每秒更新一次是不可行的 . 因为我打算在同一页面上制作多个计时器 . (也许大约5-10)
我在谷歌浏览器上试过这个 .
updateTime();
function updateTime() {
var d = new Date;
var hours = d.getHours();
var mins = d.getMinutes();
var secs = d.getSeconds();
var ampm = 'AM';
if (hours >= 12) {
ampm = 'PM';
}
if (hours > 12) {
hours = hours - 12;
}
formatted_time = hours + ':' + mins + ':' + secs + ampm;
//console.log(formatted_time);
$("#currenttime").html(formatted_time);
window.setInterval(updateTime, 1000);
}
3 回答
您可能因为每个新的setInterval调用启动一个周期性函数而耗尽内存 .
因此,每次调用updateTime时,都会启动一个新的 . 这意味着1个电话,2个电话,4个... 2 ^ n . (60秒后你将有2 ^ 60个电话 . 这是一个18位十进制数字 . )只需n秒钟 . 你可能想要使用setTimeout
在函数内部设置
setInterval
意味着setInterval
将在每次调用函数时运行 . 当您使用window.setInterval(updateTime, 1000);
调用该函数时,它不会仅调用更新时间的一部分,它将一次又一次地运行setInterval
部分..所以你可以像...一样使用它你是对的,内存不足会导致你的浏览器崩溃 . 试试这个,看看它是否会停止崩溃:
如果确实如此,请看这里http://momentjs.com/