如何使用jQuery $ .when执行多个请求时为请求分配响应?

时间:2016-04-11 12:23:20

标签: javascript jquery ajax

我正在使用jQuery tabControl.Template.LoadContent(); tabControl.ApplyTemplate(); tabControl.UpdateLayout(); ,以便在完成所有请求后处理多个GET请求的结果。一切都运作良好,但我想分配 每个对作为请求URL一部分的特定ID的响应。

我怎么能这样做?

不幸的是,我无法更改Web服务以在响应中提供ID。

$.when

1 个答案:

答案 0 :(得分:2)

您可以使用函数

包装请求
function loadCustomer(customerId) {
    return $
            .get("../webservice?customerId=" + customerId)
            .then(function (data) {
               return {customerId: customerId, data: data};
            });
}

并像这样使用

var requestList = [232, 3232].map(loadCustomer);

$.when.apply($, requestList).done(function() {
   $.each(arguments, function(_, data) {
       console.log("Result for customer ID " + data.customerId + " is: "+ data.data);
   });
});

或者您可以修改输入数据并添加customerId

function loadCustomer(customerId) {
    return $
            .get("../webservice?customerId=" + customerId)
            .then(function (data) {
               data.customeerId = customerId;
               return data;
            });
}
@Alnitak提到

UPD 。如果您需要$.ajax传递的其他参数,您可以将它们添加到返回对象以及您需要的任何格式。