我正在进行实时聊天。我已经使用setInterval每0.5秒实时显示所有消息。但是我注意到setInterval冻结并且有时会崩溃浏览器。我听说setTimeout是最好的替代方式吗?
setInterval(function(){
$.ajax({
url: "display_msg.php",
method: "POST",
data: {conn:conn},
success: function(data) {
$('#chatarea').html(data);
}
});
},500);
答案 0 :(得分:1)
事情是setInterval
将每x毫秒调用一次函数,并且,当您提交请求时,服务器需要一些时间来响应,可能会发生多个请求并行执行,从而导致一些麻烦给你的应用程序。
使用setTimeout
,您只能在完成上一个请求后提交新请求。这会好得多。别忘了写一些代码来处理超时问题。
答案 1 :(得分:1)
最好使用setTimeout
,它会在再次请求数据之前等待上一个请求解决。
(function pollMessages() {
$.ajax({
url: "display_msg.php",
method: "POST",
data: {
conn: conn
},
success: function(data) {
$('#chatarea').html(data);
setTimeout(pollMessages, 500)
}
});
})()