Javascript jQuery$.ajax循环暂停假定的异步请求

Javascript jQuery$.ajax循环暂停假定的异步请求,javascript,php,jquery,ajax,node.js,Javascript,Php,Jquery,Ajax,Node.js,我需要通过$.ajax向外部服务器发出多个HTTP请求,据我所知,这应该是异步的,这意味着多个HTTP请求不会等到前面的请求完成后再执行另一个请求 然而,我发现在实践中,这并不成立。我有这个功能: function gethttp(i, v) { var data = new FormData(); data.append("raw", v.raw); $.ajax({ url: "gethttp.php?cache=" + Math.random(),

我需要通过$.ajax向外部服务器发出多个HTTP请求,据我所知,这应该是异步的,这意味着多个HTTP请求不会等到前面的请求完成后再执行另一个请求

然而,我发现在实践中,这并不成立。我有这个功能:

function gethttp(i, v) {
    var data = new FormData();
    data.append("raw", v.raw);
    $.ajax({
        url: "gethttp.php?cache=" + Math.random(),
        type: "POST",
        data: data,
        cache: false,
        dataType: "json",
        processData: false,
        contentType: false,
        success: function(data, textStatus, jqXHR) {
            renderdata(i, data);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            renderdata(i, {found: "0", bibs:""});
            apply(i, "danger", false);
            console.log(jqXHR);
        }
    });
}
然后我使用$.each遍历一个数组
requests
,该数组将变量
I
v
传递给HTTP请求的
gethttp()

$(document).ready(function() {
    $.each(requests, function(i, v) {
        gethttp(i, v);
    });
});
但是,根据我的
请求
数组的大小,此过程最多可能需要5分钟,数组的长度可以在5-500个项目之间。我的想法是,这应该需要大约2秒钟,因为每个HTTP请求本身就需要那么长的时间,但是通过像上面那样循环,请求按顺序执行,整个过程需要永远

我是否需要使用node.js来部署它以获得并行处理?如果是这样的话,我会非常感谢关于这个主题的好教程。我可以在不使用node.js的情况下对jQuery本身执行此操作吗


谢谢

如果您在浏览器中执行此操作,并且所有请求都指向同一主机,那么浏览器将限制您一次可以向一台主机发出的请求数量。而且,一个给定的服务器可能也不能同时处理数百个请求。这正是我所怀疑的。node.js会弥补这个限制吗?node会让你同时连接到同一台主机,但对于目标web服务器一次可以处理多少实际请求,我无能为力。我认为这在10年前更像是一个问题——但与在任何给定点生成1000个HTTP请求的排名较高的网站上运行的流量相比,同时处理这么多请求根本算不上什么。我相信有一种方法可以实现多线程或并行处理,这完全取决于什么样的服务器为请求提供服务,以及每个请求的任务是什么。是的,一些大型集群服务器可以处理大量请求,但您没有说明目标服务器是什么,所以我也提到了这一点。另外,如果请求必须全部命中数据库,那么数据库也可能成为瓶颈。这完全取决于目标服务器的配置。