那是由于maximum number of connections
浏览器对单个域的影响。
请参阅Browserscope以了解每个浏览器的最低限度。
- IE 8+9:6 个连接
- IE 10:8 个连接
- Chrome 26:6 个连接
- Firefox 21:6 个连接
您可以做的是收集所有延迟对象并在用户单击链接时取消它们。
例子:
// some ajax calls
doAjax({});
doAjax({});
var requests = [];
// helper function to perform and register calls
function doAjax(options) {
var jqXHR= $.ajax(options);
requests.push(jqXHR);
jqXHR.always(function(jqXHR) {
var index = requests.indexOf(jqXHR);
if (index!=-1) {
requests.splice(index, 1);
}
});
}
// function to abort all calls
// when your application has a router to provide navigation, this function
// is typically called when you navigate to another page
function abortAllPendingRequests() {
var i;
for (i=0; i<requests.length; i++) {
var xhr = requests[i];
// already finished calls (readyState 4) should not be aborted
if (xhr.readyState != 4) {
xhr.abort();
}
}
};
abortAllPendingRequests
当用户尝试导航到另一个页面时,剩下的就是调用该函数。
当你有某种router
(例如Backbone.Router)时,你可以在那里调用它。
如果您的应用程序没有router
用于导航,但您使用普通锚链接,则可以在调用该abortAllPendingRequests
函数的链接中添加 onClick。