我遇到了具有固定超时的ajax请求的问题。所以我只是使用这个简单的代码。
$.ajax({
url: "test.html",
error: function(){
//do something
},
success: function(){
//do something
},
timeout: 7000
});
在我的场景中,有可能同时调用20个ajax请求,每个请求的超时时间为7秒。您可能知道,每个浏览器都有不同数量的连接限制。这就是问题所在。由于连接限制,某些ajax请求已排队,但超时计数已开始。因此,有些请求在到达服务器之前已经超时。当请求实际传输到服务器时,是否有可能仅将倒计时倒计时?
答案 0 :(得分:1)
快速而肮脏的替换" for $.ajax
- 仅涵盖您在示例中使用的内容,但它应该是" drop in"替换
function betterAjax(options) {
var xhr = new XMLHttpRequest();
var setListener = function(which, fn) {
if (typeof fn == 'function') {
if (which == 'success') {
which = 'load';
}
xhr.addEventListener(which, fn);
}
}
xhr.open(options.method || 'GET', options.url);
setListener('success', options.success);
setListener('error', options.error);
if (options.timeout) {
xhr.timeout = options.timeout;
}
xhr.end();
}
这是我几年前写的东西的简化版本 - 基本上它是https://jsfiddle.net/jaromanda/wpkeet34/