我正在创建需要执行的动态数组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
});