【问题标题】:Multiple asynchronous request limit jquery多个异步请求限制jquery
【发布时间】:2014-08-22 22:38:35
【问题描述】:

我用 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 截取的网络截图,你可以看到最后一个请求只有在之前完成时才开始。为什么?异步请求有限制吗?

图片很小,但您可以查看最后两个非异步请求! 第一行不是异步请求,而是在屏幕截图中

我需要让所有请求同时开始

【问题讨论】:

  • 简而言之,这取决于您的服务器端实现。
  • 好的,但取决于服务器端?
  • 对于初学者,您使用什么语言?
  • 嗯,我希望使用 .NET,因为我在那里有解决方案。但似乎 php 中并发 ajax 请求的一个常见问题是会话被阻止:stackoverflow.com/questions/15686572/…
  • 呃,我不知道是不是问题,因为我使用的是codeIgniter,这个函数非常大,但不用于编写会话,只返回大数组数据

标签: javascript jquery asynchronous


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

这不是错误。 — 这是一项功能。

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

【讨论】:

  • 不可能结合这些不同的方法
  • 那你就不走运了。对不起。
猜你喜欢
  • 2015-01-17
  • 1970-01-01
  • 2012-05-26
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 2016-10-22
相关资源
最近更新 更多