Nei*_*man 5 ajax jquery memory-leaks setinterval
我写了一个小聊天框小部件,它每秒运行一次ajax调用,以获取已发布的新消息.问题是它正在泄漏内存,只有大约15分钟的打开后它会崩溃我的浏览器(Firefox).
这可能是我,因为我是一个相对新手,我敢肯定我错过了一些东西或者没有让我的变量等等.
var chat = {}
chat.fetchMessages = function() {
$.ajax({
url: '/chat_ajax.php',
type: 'post',
data: { method: 'fetch'},
success : function(data) {
$('#chat .messages').html(data);
$("#chat").scrollTop($("#chat")[0].scrollHeight);
}
});
}
chat.interval = setInterval(chat.fetchMessages, 1000);
chat.fetchMessages();
Run Code Online (Sandbox Code Playgroud)
有人可以看一下我的(基本)代码,看看你是否能找到内存泄漏发生的地方,以及我做错了什么?我是否需要取消某些变量或其他内容?
非常感谢!
永远不要使用setInterval()ajax,否则您的请求永远不会保持同步.使用setTimeout()而不是等待你的逻辑,setTimeout()在complete回调中递归启动.
例.
$(DoMyAjax); // start your ajax on DOM ready
function DoMyAjax() {
$.ajax({
complete: function() {
// your logic here
setTimeout(DoMyAjax, 1000);
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5180 次 |
| 最近记录: |