我正在做一个简单的聊天,它可以在不同的浏览器中工作,但是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);
}
});
}
最佳答案
我想你想要这样的东西:
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;
}
});
}
关于javascript - setTimeout一直触发,如何让它只触发一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17721430/