下的javascript完成以下(这是一个node.js的COMET应用程序):如何避免重载JavaScript CallStack?
- 请求发送到服务器建立并保持到服务器有东西 回报。
- 一旦请求返回,处理数据并立即在 成功事件的回调函数内发出另一个 请求。
- 如果发生超时(服务器在时间范围内没有任何内容可以返回) 另一个请求在错误事件的回调函数内进行。
我的担心(我认为是有效的)是请求不断添加到callstack中,就像一个永不结束的递归函数。一段时间后,它导致浏览器最终崩溃,并变得没有反应(至少我认为这是原因)。
我该如何完成同样的事情并避免这个问题?
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(HTTP: //socket.io/)?可能对你的情况有用。 – Marshall
不应该是'textStatus ==“超时”'? – jdigital
@jdigital - 正确的抓住! –