Javascript 如何将多个Ajax Post调用异步化到同一URL

Javascript 如何将多个Ajax Post调用异步化到同一URL,javascript,ajax,Javascript,Ajax,我有一个javascript中的项目数组,对于每个项目,我必须向URL发送一个ajax帖子,以获取相应的信息并在容器中显示信息。代码大致如下所示: var data = some_data; array.forEach(item, idx)=> { callAjaxAndUpdate(data, item, $('div#container'+i); }); Ajax方法非常简单 var standardUrl = 'https://example.com/post.php';

我有一个javascript中的项目数组,对于每个项目,我必须向URL发送一个ajax帖子,以获取相应的信息并在容器中显示信息。代码大致如下所示:

var data = some_data;
array.forEach(item, idx)=> {
    callAjaxAndUpdate(data, item, $('div#container'+i);
});
Ajax方法非常简单

var standardUrl = 'https://example.com/post.php';
function callAjaxAndUpdate(data, item, container) {
    $.ajax({
        url: standardUrl
        data: data,
        type: 'POST',
    }).done(function(res) {
       container.append(res.data);
    }).fail(function(res) {
       container.append(res.responseText);
    }).always(function() {
       container.append('DONE!');
    });
}
然而,这件事似乎整个事情都成了阻碍。我在服务器端记录了时间戳,我可以看到每个项目的ajax请求只有在前一个项目的请求完成后才会被触发(总是执行部分)

有人能帮我解释一下为什么这个设置是同步的,以及如何使它异步吗?请注意,此脚本在浏览器中执行,而不是在NodeJ上执行


编辑:事实证明,是PHP后端以阻塞方式处理请求。也许这次会议是罪魁祸首。我现在结束这个问题。感谢您的帮助和建议。

试试默认的Ajax异步

var standardUrl = 'https://example.com/post.php';
function callAjaxAndUpdate(data, item, container) {
$.ajax({
    url: standardUrl,
    async: true,
    data: data,
    type: 'POST',
}).done(function(res) {
   container.append(res.data);
}).fail(function(res) {
   container.append(res.responseText);
}).always(function() {
   container.append('DONE!');
});
}

或者您可以在.done方法上调用该方法

您可以使用setTimeout函数以一定的间隔时间使其异步。已异步的状态。您的浏览器会对并发ajax调用应用每个域的限制,但我认为默认值通常是5。事实证明,是PHP后端以阻塞方式处理请求。也许这次会议是罪魁祸首。我现在结束这个问题。谢谢你的帮助和建议。