Javascript 轮询器没有立即启动
Javascript poller does not start immediately
在我的 javascript 中,我定义了一个轮询器,以便每秒刷新一些内容。定义如下:
var poller = {
// number of failed requests
failed: 0,
// starting interval - 1 seconds
interval: 1000,
// kicks off the setTimeout
init: function() {
setTimeout(
$.proxy(this.getData, this), // ensures 'this' is the poller obj inside getData, not the window object
this.interval
);
},
// get AJAX data + respond to it
getData: function() {
var self = this;
$.ajax({
url: "api/view",
success: function(response) {
// ....do something....
// recurse on success
self.init();
}
},
error: $.proxy(self.errorHandler, self)
});
},
// handle errors
errorHandler: function() {
if (++this.failed < 10) {
this.interval += 1000;
// recurse
this.init();
}
}
};
poller.init();
});
问题是加载页面后它没有立即启动。有谁知道原因吗?非常感谢!
发生这种情况是因为第一次 $.ajax
调用的响应时间。在 localhost
(开发环境)中调用服务时,调用有时可能会超过 40 秒。
此外,请查看是否有任何其他元素(例如您在特定页面中使用的 Highcharts)导致页面加载延迟。
您可以在浏览器的开发人员控制台中的“网络”下检查此行为。这是我的一个 $.ajax
调用的响应时间示例(我使用的是 Google Chrome):
我还怀疑当您将其移至生产环境时,您的响应时间会短得多,但您必须考虑到 1000 毫秒对您的服务器来说可能过于激进。
在我的 javascript 中,我定义了一个轮询器,以便每秒刷新一些内容。定义如下:
var poller = {
// number of failed requests
failed: 0,
// starting interval - 1 seconds
interval: 1000,
// kicks off the setTimeout
init: function() {
setTimeout(
$.proxy(this.getData, this), // ensures 'this' is the poller obj inside getData, not the window object
this.interval
);
},
// get AJAX data + respond to it
getData: function() {
var self = this;
$.ajax({
url: "api/view",
success: function(response) {
// ....do something....
// recurse on success
self.init();
}
},
error: $.proxy(self.errorHandler, self)
});
},
// handle errors
errorHandler: function() {
if (++this.failed < 10) {
this.interval += 1000;
// recurse
this.init();
}
}
};
poller.init();
});
问题是加载页面后它没有立即启动。有谁知道原因吗?非常感谢!
发生这种情况是因为第一次 $.ajax
调用的响应时间。在 localhost
(开发环境)中调用服务时,调用有时可能会超过 40 秒。
此外,请查看是否有任何其他元素(例如您在特定页面中使用的 Highcharts)导致页面加载延迟。
您可以在浏览器的开发人员控制台中的“网络”下检查此行为。这是我的一个 $.ajax
调用的响应时间示例(我使用的是 Google Chrome):
我还怀疑当您将其移至生产环境时,您的响应时间会短得多,但您必须考虑到 1000 毫秒对您的服务器来说可能过于激进。