【发布时间】:2011-09-22 08:24:00
【问题描述】:
下面的 javascript 完成以下操作(这是针对 node.js COMET 应用程序):
- 向服务器发出请求并一直保持到服务器有东西要处理 返回。
- 一旦请求返回数据被处理,另一个 请求是在回调函数中立即发出的 成功事件。
- 如果发生超时(服务器在时间范围内没有返回任何内容) 在错误事件的回调函数中发出另一个请求。
我的担忧(我认为这是正确的)是请求会不断地添加到调用堆栈中,就像一个永不结束的递归函数。一段时间后,它会导致浏览器最终崩溃并变得无响应(至少我认为这是原因)。
我怎样才能完成同样的事情并避免这个问题?
function GetData(){
$.ajax({
url: "admin.html",
type: "POST",
dataType: "json",
contentType: 'text/json',
data: JSON.stringify({
cmd: "getData"
}),
timeout: (60 * 1000),
success: function(data, textStatus, jqXHR){
UpdateScreen(data);
GetData();
},
error: function(jqXHR, textStatus, errorThrown){
if(textStatus == "timeout"){
GetData();
}
}
});
}
【问题讨论】:
-
你签出socket.io了吗?可能对您的情况有用。
-
不应该是
textStatus == "timeout"吗? -
@jdigital - 不错不错!
标签: javascript jquery node.js comet