多个Ajax呼叫监听器

时间:2018-06-25 17:50:27

标签: javascript jquery ajax asynchronous

我有一个表,该表从10个不同的来源获取数据,其中一些信息非常繁琐(我存储了对象,单击表可提供更多信息)。我试图仅在所有信息加载完成后才显示该页面。我的方法是通过创建10个函数然后使用.then()将它们链接在一起来链接ajax调用。它可以正常工作,但会大大延长加载时间,因为现在每个功能都在等待另一个功能解决。我不在乎,我需要知道的是何时完成所有调用(按w / e顺序)并执行格式化功能,隐藏加载模式等。

关于如何做到这一点的任何想法?

已更新:这是代码:

$(function () {
$('#indicator').modal('show')
firstCall().then(secondCall).then(thirdCall).then(forthCall).then(fifthCall)
.then(sixthCall).then(seventhCall).then(eighthCall).then(ninthCall).then(tenthCall).then(function(){
format();
$('#indicator').modal('hide');
})})

这是单个函数调用的示例:

function secondCall() {
return $.ajax({
    data: { executive: true, ex_name: 'Last_name, First_name' },
    success: function (data) {
        populate(arrange(data));
    }
})

1 个答案:

答案 0 :(得分:0)

我已经根据您的答复找到了答案,这让我开始思考“何时”,我意识到它具有一种有趣的工作方式。因此,由于我在每个函数中分别处理来自ajax调用的数据,因此我要做的就是:

$(function () {
  $('#indicator').modal('show')
    $.when(firstCall(),secondCall(),thirdCall(),forthCall(),fifthCall(),sixthCall(), 
         seventhCall(), eighthCall(), ninthCall(), tenthCall()).done(function(){
            format();
            $('#indicator').modal('hide');
         })
})