【发布时间】:2015-04-26 15:45:41
【问题描述】:
我们有以下 AJAX 节流器。这是为了能够对一个页面执行许多 (20+) 个 ajax 请求,而不会因为第一个 X 请求总共花费了 60 秒而导致其余的超时。
RequestThrottler: {
maximumConcurrentRequests: 3, //default to 3
requestQueue: new Array(),
numberOfRequestCurrentlyProcessing: 0,
addRequestToQueue: function (currentRequest) {
var self = this;
self.requestQueue.push(currentRequest);
if (self.numberOfRequestCurrentlyProcessing < self.maximumConcurrentRequests) { self.sendNextRequest(); }
},
sendNextRequest: function () {
var self = this;
if (self.numberOfRequestCurrentlyProcessing >= self.maximumConcurrentRequests) { return; }
if (self.requestQueue.length === 0) { return; }
var currentRequest = self.requestQueue.pop();
self.numberOfRequestCurrentlyProcessing++;
AJAX.SendAjaxRequest(currentRequest.url, currentRequest.httpMethod,
function(data){
self.numberOfRequestCurrentlyProcessing--;
currentRequest.onSuccessCallback(data);
self.sendNextRequest();
},
function(){
self.numberOfRequestCurrentlyProcessing--;
currentRequest.onErrorCallback();
self.sendNextRequest();
});
},
sendUpdateRequest: function (currentRequest) {
var self = this;
self.addRequestToQueue(currentRequest);
}
}
但是,由于这些请求位于 Javascript 队列中,因此当用户尝试加载新页面时,开发人员工具会在新页面的 NET 区域中显示响应。我们的应用程序出于隐私原因进行了检查,以不允许此类行为。这对于浏览器来说是正常的,还是某种错误,还是我做错了什么?
【问题讨论】:
标签: javascript ajax google-chrome firefox internet-explorer-11