gpt4 book ai didi

javascript - setTimeout导致内存泄漏

转载 作者:行者123 更新时间:2023-11-28 20:41:42 24 4
gpt4 key购买 nike

var SetInactivityTimeOut = function () {
try {
var TimeoutInterval = parseInt(10, 10);

var PreviousTimeStamp = Math.round(new Date().getHours() * 60 + new Date().getMinutes());

if (TimeoutInterval === 0) return;

TimeoutInterval = TimeoutInterval * 60 * 1000; //Converting to milisecond
var TimeOutObj;
if (TimeOutObj != null && TimeOutObj != undefined) {
clearTimeout(TimeOutObj);
}
//Ti.API.info('TimeOutObj---'+TimeOutObj);
TimeOutObj = setTimeout(function () {
open the main page
},TimeoutInterval);

} catch (e) {
error(e);
}
}

这是我在每次单击按钮时使用的功能,一旦 10 分钟空闲时间结束,它就会重新打开索引页面。但是当我尝试从那里登录应用程序时,速度非常慢并且应用程序被挂起。

我在移动设备中使用此代码。我只是想知道函数的编写方式是否存在内存泄漏。

最佳答案

由于您目前拥有函数,所以 TimeOutObj 是在您检查它是否存在的同一函数中声明的,它将始终存在,但始终是 未定义 code> 在您检查是否是超时 ID 的地方,因此您永远不会真正清除超时。

通过将 SetInteractivityTimeout 函数的大部分内容包装在闭包中,您可以在实际处理函数的范围之外声明 TimeOutObj,因此它将保持其值每次调用 SetInactivityTimeout 函数时。

var SetInactivityTimeOut = (function () {
var TimeOutObj;
var TimeoutInterval = 10 * 60 * 1000; //Converting to milisecond

return function() {
if (TimeOutObj) {
clearTimeout(TimeOutObj);
}

TimeOutObj = setTimeout(function () {
// open the main page
}, TimeoutInterval);
}
}());

关于javascript - setTimeout导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14278153/

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