新手在这里..
我只想问我怎样才能在学校完成作业。 我基本上有这个需要。
我想每10秒发送一次ajax请求,但如果我之前的请求尚未返回,我不想发起另一个请求。
我认为与DB的连接有时可能会那么糟糕,所以我想在我启动另一个请求之前等待我之前的请求完成(成功/失败/错误)。
我查看了javascript并找到了setinterval方法。但是,如何排列我的ajax请求,以便服务器不被许多ajax请求激活?
我正在研究jquery,正在使用JSON。
答案 0 :(得分:4)
一种方法是在发出请求时将变量设置为false。当你把它拿回来时,将它恢复为真。当您发送新的ajax请求时,请确保该值为true。如果没有将它添加到某种队列中,以便在请求完成时调用它。但是,如果每个请求都需要更长的时间,那么您的队列将得到相当多的备份。所以你可能不想要一个队列。所以当你去发送ajax请求时,如果变量是假的,你只需再等10秒钟。
答案 1 :(得分:1)
我甚至会帮助更多:
var isWatingForResponse = false;
$.ajax({
url: 'wherever'
,dataType: 'json'
,beforeSend: function() {
if(isWatingForResponse) {
return false;
}
isWatingForResponse = true;
}
,complete: function() {
isWatingForResponse = false;
}
,success: function (data) {
//process data
}
});
或者关注@ qw3n回答。这应该适用于jQuery 1.4.2
答案 2 :(得分:0)
我看到OP问题:
这个恕我直言,是一个非常好的问题。 如果可以的话,我想绘制管道:
web-client->network->web-server->network->Db-server
Db-server->network->web-server->network->web-client
您在客户端中处理db-server
问题的解决方案是可行的,但实际上并未解决实际问题。它可能会使您未来的客户扩展陷入瘫痪。
你应该尽可能地处理这个问题。在网络服务器中。