我正在创建需要执行的动态数组af ajax调用。所以我做这样的事情:

        var requests = [];

        if (weNeedCustomerData) {
            var customerCallPromise = $.ajax(...);
            requests.push(customerCallPromise);
        }
        if (weNeedOrdersData) {
            var ordersCallPromise = $.ajax(...);
            requests.push(ordersCallPromise);
        }
        if (weNeedSalesData) {
            var salesCallPromise = $.ajax(...);
            requests.push(salesCallPromise);
        }

        $.when.apply(null, requests).done(function (result1, result2, result3) {
            ...
        });


只要我所有的“如果”条件都成立,那就很好。我可以得到每个电话的结果。

但是,我应该如何处理例如第一个“ if”语句为假且最终仅收到两个请求的情况?在“完成”方法中,我只有两个结果。

在我不知道会有多少个请求,也不知道“完成”功能有多少个参数的情况下,如何读取这些结果?

最佳答案

存储或单独处理结果:

    var requests = [], customerData, ordersData, salesData;

    if (weNeedCustomerData) {
        var customerCallPromise = $.ajax(...).done(function(result){
            customerData = result;
        });
        requests.push(customerCallPromise);
    }
    if (weNeedOrdersData) {
        var ordersCallPromise = $.ajax(...).done(function(result){
            ordersData = result;
        });
        requests.push(ordersCallPromise);
    }
    if (weNeedSalesData) {
        var salesCallPromise = $.ajax(...).done(function(result){
            salesData = result;
        });
        requests.push(salesCallPromise);
    }

    $.when.apply(null, requests).done(function () {
        //Here you know all relevant requests are complete
        if(customerData) {
            //...
        }
        //etc
    });

10-05 20:27
查看更多