当多个ajax调用完成时

 手机用户2602916425 发布于 2023-02-12 15:26

以下是不按我想要的顺序运行的场景:

var masterData = {};
var tableNames = ['table1','table2','table3','table4','table5','table6'];
var pullSqlData = function(){
  tableNames.forEach(function(value) {
    if(storage.isEmpty(value)) {
      $.getJSON('http://domain.com?r=appsync/read&id='+value+ "&callback=", function(data){
        masterData[value] = data;
        storage.set(value,data);
      });
    } else {
      masterData[value] = storage.get(value);
    }
  });
};

$.when(pullSqlData()).done(function(){
console.log('all done');
});

在我四处搜索之后,我知道如果我手动做类似的话,我可以上班

$.when(
$.getJSON('http://domain.com?r=appsync/read&id=table1&callback=', function(data){
        masterData[value] = data;
        storage.set(value,data);
      }),
$.getJSON('http://domain.com?r=appsync/read&id=table2&callback=', function(data){
        masterData[value] = data;
        storage.set(value,data);
      }),
//more calls
).done(function(){
console.log('all done');
});

但是我想知道是否有一种方法可以正确地进行

*storage是一个HTML5 localStorage jQuery插件

1 个回答
  • 由于您是动态数量的请求,请尝试

    var masterData = {};
    var tableNames = ['table1', 'table2', 'table3', 'table4', 'table5', 'table6'];
    var pullSqlData = function () {
        var requests = [];
        tableNames.forEach(function (value) {
            if (storage.isEmpty(value)) {
                var xhr = $.getJSON('http://domain.com?r=appsync/read&id=' + value + "&callback=", function (data) {
                    masterData[value] = data;
                    storage.set(value, data);
                });
                requests.push(xhr)
            } else {
                masterData[value] = storage.get(value);
            }
        });
        return requests;
    };
    
    $.when.apply($, pullSqlData()).done(function () {
        console.log('all done');
    });
    

    您需要传递所有ajax请求,$.when()因此pullSqlData必须返回由它创建的ajax请求列表.另外$ .when()不会将数组作为参数,因此您需要使用Function.apply()将可变数量的参数传递给它

    2023-02-12 15:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有