这是我的ajax代码,所以请任何人告诉我如何将此代码更改为长轮询?
这是我的代码: -
var chat = {}
chat.fetchMessages = function () {
$.ajax({
url: 'ajax/ajax/chat.php',
type: 'POST',
data: { method: 'fetch' },
success: function(data) {
$('#chats').html(data);
}
});
}
chat.interval = setInterval(chat.fetchMessages, 1000);
答案 0 :(得分:2)
你必须将fetchMessage的下一次调用放在前一个的回调中:
var chat = {}
chat.fetchMessages = function () {
$.ajax({
url: 'ajax/ajax/chat.php',
type: 'POST',
data: { method: 'fetch' },
success: function(data) {
$('#chats').html(data);
chat.fetchMessages(); // let's do it again
}
});
}
chat.fetchMessages(); // first call
答案 1 :(得分:0)
上面的代码似乎工作正常,但这会立即调用函数,因为它会增加流量,并且浏览器的连续长轮询内存使用可能会增加。尝试使用settimeout在调用之间保持一段时间,如果清除缓存也会很好。其他选择是彗星或信号。