【发布时间】:2017-04-28 15:17:03
【问题描述】:
我目前正在使用 SetInterval 函数和 Ajax 调用来每 30 秒重新加载一次局部视图,如下所示:
$(document).ready(function () {
//reload new jobs every 30 sec
setInterval(function () {
//only reload the sections between certain times
var date = new Date();
var hour = date.getHours();
if (hour >= 7 && hour <= 21) {
ReloadNew();
}
}, 30000);
function ReloadNew() {
$.ajax({
url: "@Url.Action("NewFaults","Fault")",
type: 'GET',
dataType: 'html',
cache: false,
success: function (html) {
$('#NewFaults').html(html);
}
});
}
});
但是我一直遇到内存泄漏问题,经过一番研究,我发现不建议将 SetInterval 与 Ajax 一起使用,因为它们会在窗口失焦时堆叠,然后在重新进入时立即运行重点。建议改用 SetTimeout。
但是,据我所知,有多种方法可以通过 Ajax 调用来实现 SetTimeout,所以我想知道是否有人可以帮助我调整上面的内容以使用 SetTimeout。
谢谢
【问题讨论】:
-
SetTimeout 只运行一次,而不是每个时间段。
标签: jquery ajax memory-leaks settimeout setinterval