gpt4 book ai didi

javascript - JS setInterval() 内存泄漏

转载 作者:行者123 更新时间:2023-12-01 03:53:16 24 4
gpt4 key购买 nike

我知道这里有一堆关于这个问题的问题和答案,但我不知道它是否真的适用于我的案例。

我有一个时间脚本,带有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();

最佳答案

您正在递归调用 updateTime 函数,该函数使用 setInterval 重复调用 updateTime。从方法中删除 setInterval() 调用并像这样调用它。

function updateTime() {
//You rest of code
}

setInterval(updateTime, 500);

关于javascript - JS setInterval() 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43000154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com