我知道这里有很多关于这个问题的问题和答案,但我不知道它是否真的适用于我的案例。
我有一个时间脚本,具有setInterval
功能。它工作正常,第一分钟,但然后在chrome / opera任务管理器中我看到这个脚本运行的选项卡从40mb到2-3gb!这是疯了,我不知道如何解决这个问题。只有以不同的方式重写所有脚本。
脚本:
function checkTime(i) {
return (i < 10) ? "0" + i : i;
};
function calcTime(city, offset) {
d = new Date();
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
nd = new Date(utc + (3600000*offset)),
h = checkTime(nd.getHours()),
m = checkTime(nd.getMinutes()),
s = checkTime(nd.getSeconds());
return nd.toLocaleString();
};
function updateTime() {
if (document.getElementById('timeMoscow')) {
calcTime('Moscow', '+3');
document.getElementById('timeMoscow').innerHTML = h + ":" + m /*+ ":" + s*/;
}
if (document.getElementById('timeKiev')) {
calcTime('Kiev', '+2');
document.getElementById('timeKiev').innerHTML = h + ":" + m /*+ ":" + s*/;
} else
if (document.getElementById('timeAstana')) {
calcTime('Astana', '+6');
document.getElementById('timeAstana').innerHTML = h + ":" + m /*+ ":" + s*/;
}
if (document.getElementById('timeNewYork')) {
calcTime('NewYork', '-4');
document.getElementById('timeNewYork').innerHTML = h + ":" + m /*+ ":" + s*/;
}
setInterval(updateTime, 500); //Problem
}
updateTime();
答案 0 :(得分:2)
您使用重复调用updateTime
的{{1}}以递归方式调用setInterval
函数。从方法中删除updateTime
调用并调用它。
setInterval()