在这里,每30秒,我进行AJAX调用更新我的数据库。
setInterval(function(){
$.ajax({ url: "server", success: function(data){
//Update your dashboard gauge
salesGauge.setValue(data.value);
}, dataType: "json"});
}, 30000);
另一个问题 - 如果服务器需要超过30秒的响应时间会有什么缺点?当呼叫#1正在更新时,呼叫将发送另一个请求 - 将数据库更新为最新值。
长轮询
(function poll(){
$.ajax({ url: "server", success: function(data){
//Update your dashboard gauge
salesGauge.setValue(data.value);
}, dataType: "json", complete: poll, timeout: 30000 });
})();
发送AJAX呼叫,每30秒调用一次,一旦呼叫完成,它再次调用自身。虽然它看起来更加同步,但是如果我们发送一个电话,结束30秒(当我等待第一个电话回来时)怎么办?
现在我们在第一个问题中遇到了同样的“问题”。语音标记中的问题,因为我在等待前一个响应时发送AJAX请求时没有发现问题。
谢谢!如果这个问题不明确,请告诉我。
答案 0 :(得分:1)
主要问题:
setInterval(function(){
$.ajax({ url: "server", success: function(data){
//Update your dashboard gauge
salesGauge.setValue(data.value);
}, dataType: "json"});
}, 30000);
您是否未在AJAX请求本身上设置超时。这使得它未定义,因此您可以建立五个请求,所有等待服务器的响应每30秒添加另一个。这并不理想,因为:
使用setInterval没有什么特别的错误(即使它与jQuery完全回调是多余的),但你需要设置超时。