我正在进行一个简单的聊天,它可以在不同的浏览器中运行,但是setTimeout
一直在触发,我希望它只发射一次,因为继续射击是没有意义的,我相信它也会导致更多的压力服务器
这是从其他地方调用的函数:
function chat_load() {
$.post('chat.php', {stage:'load'}, function(data) {
$('#window').html(data);
setTimeout("chat_load();", 1000);
});
}
我尝试了类似下面的东西,但它只是继续射击。此外,该功能仅在单击某个按钮时才会触发,该按钮每隔一段时间才会发生一次。
var c = 0;
function chat_load() {
$.post('chat.php', {stage:'load'}, function(data) {
$('#window').html(data);
var t = setTimeout("chat_load();", 1000);
c++;
if (c == 3) {
clearTimeout(t);
}
});
}
答案 0 :(得分:2)
我想你想要这样的东西:
var c = 0, t;
function chat_load() {
$.post('chat.php', {stage:'load'}, function(data) {
$('#window').html(data);
clearTimeout(t);
t = setTimeout(chat_load, 1000);
if (++c === 3) {
clearTimeout(t);
c=0;
}
});
}
答案 1 :(得分:0)
您无法在异步函数中更改变量
c++;
无法正常工作
也许你应该这样做
function addCount() {
c++;
}
并将c++
更改为addCount();
所以这个
var c = 0;
function addCount() {
c++;
}
function chat_load() {
$.post('chat.php', {stage:'load'}, function(data) {
$('#window').html(data);
var t = setTimeout("chat_load();", 1000);
addCount();
if (c == 3) {
clearTimeout(t);
}
});
}