下面应该每10秒检查一个页面的数据(一个简单的整数)。当整数存在时(data != null),然后警告并停止间隔。
但是每10秒就会排队提醒一次。当脚本最终找到它正在寻找的整数时,会弹出大量的警报.每十秒钟一次。如果脚本持续50秒,那么在加载页面后50秒内,您将立即得到5个警报。
有什么问题吗?if (data != null) {不应该阻止警报触发吗.直到有数据为止?我不知所措。另外,“数据”从未出现在警报中。
var pinger;
$(document).ready(function() {
var pinger = setInterval(function(){
$.get("/ajax.php", function(data) {
if (data != null) { /** Shouldn't this line stop loops? **/
alert("alert" + data);
clearInterval(pinger);
}
});
}, 10000);
});发布于 2011-09-08 09:43:18
/ajax.php比setInterval()调用函数所需的时间更长。因此,当它结束时,setInterval()实际上已经多次调用该函数。
使用setTimeout()而不是setInterval():
$(document).ready(function() {
setTimeout(function self(){
$.get("/ajax.php", function(data) {
if (data != null) {
alert("alert" + data);
} else {
setTimeout(self, 10000);
}
});
}, 10000);
});https://stackoverflow.com/questions/7346014
复制相似问题