考虑到浏览器的连接限制,ajax请求超时

时间:2017-02-15 10:36:11

标签: javascript jquery ajax

我遇到了具有固定超时的ajax请求的问题。所以我只是使用这个简单的代码。

$.ajax({
    url: "test.html",
    error: function(){
        //do something
    },
    success: function(){
        //do something
    },
    timeout: 7000
});

在我的场景中,有可能同时调用20个ajax请求,每个请求的超时时间为7秒。您可能知道,每个浏览器都有不同数量的连接限制。这就是问题所在。由于连接限制,某些ajax请求已排队,但超时计数已开始。因此,有些请求在到达服务器之前已经超时。当请求实际传输到服务器时,是否有可能仅将倒计时倒计时?

1 个答案:

答案 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/