Nấm*_*Lùn 1 ajax jquery callback setinterval
假设我有一些文件:server.php,client.php和一个表:user [id,name,status]
server.php将处理如下事情:更新用户状态等...
在client.php我有一个AJAX调用server.php为如果状态被激活(以每10秒)检查:
$(document).ready(function(){
setInterval(function(){
check_user_status(user_id)
},10000);
});
check_user_status = function (user_id) {
$.ajax({
type: "post",
data: "user_id="+user_id,
url : "server.php",
success: function(data){
// do something with the response
// I want to exit the checking operation if user is already activated
},
error: function(e){
alert("Error occurred");
}
});
}
Run Code Online (Sandbox Code Playgroud)
怎么可能呢?
谢谢你的时间!
记住已经给你的计时器的ID:
var timer = setInterval( ... );
Run Code Online (Sandbox Code Playgroud)
然后在满足条件时取消它:
clearInterval(timer);
Run Code Online (Sandbox Code Playgroud)
该timer变量将需要在"范围" -最简单的办法就是把所有的代码内部document.ready处理程序.
FWIW,它实际上更好地setTimeout代替setInterval,然后每次重新启动计时器.
setInterval如果您的服务器没有响应,将导致问题,因为它将尽职尽责地每10秒排队一次回调.一旦服务器响应,它将突然尝试立即运行所有这些回调.
setTimeout相反,使用将确保在前一个检查实际完成之前没有新检查排队.