javascript - Javascript/jQuery 中的并行 Ajax 调用

标签 javascript jquery html ajax

我是 Javascript/jquery 世界的新手,需要一些帮助。现在,我正在编写一个 html 页面,我必须在其中进行 5 次不同的 Ajax 调用来获取数据以绘制图形。现在,我这样调用这 5 个 ajax 调用:

$(document).ready(function() {
    area0Obj = $.parseJSON($.ajax({
        url : url0,
        async : false,
        dataType : 'json'
    }).responseText);

    area1Obj = $.parseJSON($.ajax({
        url : url1,
        async : false,
        dataType : 'json'
    }).responseText);
.
.
.
    area4Obj = $.parseJSON($.ajax({
        url : url4,
        async : false,
        dataType : 'json'
    }).responseText);

    // some code for generating graphs

)} // closing the document ready function 

我的问题是,在上面的场景中,所有的 ajax 调用都是串行的。也就是说,在 1 次调用完成后 2 次启动,当 2 次调用完成时 3 次启动等等。每个 Ajax 调用大约需要 5 - 6 秒来获取数据,这使得整个页面在大约 30 秒内加载.

我尝试将异步类型设置为 true,但在那种情况下,我没有立即获取数据来绘制图表,这违背了我的目的。

我的问题是: 我怎样才能使这些调用并行进行,以便我开始并行获取所有这些数据并可以在更短的时间内加载我的页面?

提前致谢。

最佳答案

使用 jQuery.when (延期):

$.when( $.ajax("/req1"), $.ajax("/req2"), $.ajax("/req3") ).then(function(resp1, resp2, resp3){ 
    // plot graph using data from resp1, resp2 & resp3 
});

回调函数仅在所有 3 个 ajax 调用完成时调用。

关于javascript - Javascript/jQuery 中的并行 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12429765/

相关文章:

javascript - 如何检查url是否包含父页面url?

javascript - 如何在手机浏览器非事件选项卡中保持 WebRTC dataChannel 打开?

javascript - 开 Jest 比较值没有视觉差异。测试数组时

javascript - 无法从 $.ajax 迭代 json 数组

javascript - 执行前检查宽度

javascript - SyntaxHighlighter 插入新行和编号错误

html - 在 SVG 图像悬停上添加阴影

javascript - Shopify 应用程序 - 在 Ruby on Rails 应用程序中使用脚本标签

javascript - React.js 和 D3,向强制有向图添加箭头

JavaScript 未捕获类型错误 : showcreate1 is not a function