我编写了一个聊天框小部件,它每秒运行一次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();
有人可以看一下我的(基本)代码,看看是否可以发现发生内存泄漏的地方以及我做错了什么?我是否需要取消设置某些变量或其他内容?
非常感谢!
切勿setInterval()与ajax一起使用,否则您的请求将永远不会保持同步。使用setTimeout()代替,然后挂起您的逻辑,setTimeout()在complete回调中递归地启动。
setInterval()
setTimeout()
complete
例。
$(DoMyAjax); // start your ajax on DOM ready function DoMyAjax() { $.ajax({ complete: function() { // your logic here setTimeout(DoMyAjax, 1000); } }); }