我写了一个很长时间的轮询助手类,因为$ .getJSON方法我异步它不会递归并且不会溢出吗? (在responseCallback中调用startPolling
递归MyApp.Polling = function (url, parameters, callback) {
this.url = url;
this.parameters = parameters;
this.callback = callback;
this.startPolling();
};
MyApp.Polling.prototype = {
abort: function () {
if (this.request != null) {
this.request.abort();
}
},
startPolling: function (xhr) {
if (xhr != null && xhr.status == 0) return;
this.request = $.getJSON(this.url, this.parameters, $.proxy(this.responseCallback, this));
this.request.error($.proxy(this.startPolling, this));
},
responseCallback: function (data) {
this.callback(data);
this.startPolling();
}
};
编辑:感谢快速回复的人,我有另一个问题。在firebug中有很多请求,看起来他们仍然在等待响应(小旋转器在请求旁边旋转)但它们应该被提供(正如您在代码中看到的那样,一次只提供一个请求),如果我关闭了整个网络服务器他们没有中止他们继续旋转,它是一个firebug bug还是我的长时间轮询有问题?感谢
答案 0 :(得分:2)
这是正确的。在成功或错误事件发生之前,您将退出startPolling
方法并将控制权返回给浏览器,因此不会从方法中调用回调。
答案 1 :(得分:1)
真 - 假设有效 - 没有递归。