多个异步请求限制jquery

时间:2014-07-02 08:08:37

标签: javascript jquery asynchronous

我用jquery创建了多个异步请求,如下所示:

       $.when(
            $.ajax({   
                url: site_url_city_1, 
                type: "GET", 
                data: window.location.search, 
                dataType: "json", 
                success: function(data) {
                    data_1 = data;
                }
            }),
            $.ajax({   
                url: site_url_city_2, 
                type: "GET", 
                data: window.location.search, 
                dataType: "json", 
                success: function(data) {
                    data_2 = data;
                }
            }),
            $.ajax({   
                url: site_url_city_3, 
                type: "GET", 
                data: window.location.search, 
                dataType: "json", 
                success: function(data) {
                    data_3 = data;
                }
            }),
            $.ajax({   
                url: site_url_city_4, 
                type: "GET", 
                data: window.location.search, 
                dataType: "json", 
                success: function(data) {
                    data_4 = data;
                }
            }),
            $.ajax({   
                url: site_url_city_5, 
                type: "GET", 
                data: window.location.search, 
                dataType: "json", 
                success: function(data) {
                    data_5 = data;
                }
            })
        ).then(function() {
           //other code
        });

我希望在控制台中同时查看所有请求,但是不对。

这是我来自firebug的网页截图,你可以看到最后一个请求只在上一次完成时开始。为什么?异步请求是否有限制?

enter image description here

图像很少,但您可以查看最后两个不异步的请求! 第一行不是异步请求,但它是截图

我需要同时开始所有请求

2 个答案:

答案 0 :(得分:0)

检查此SO:jQuery: Making simultaneous ajax requests, is it possible?

  

浏览器会在任何给定时间将您限制为两个请求。这是一部分   HTTP规范。 (HTTP 1.1规范,第8.1.4节)

答案 1 :(得分:0)

这不是一个错误。 - 这是一个功能。

根据浏览器的不同,每个域同时存在AJAX连接限制,可能还有各种方法。克服这个问题的最佳方法是将数据响应组合到尽可能少的文件中。