在循环数组时延迟$ .when

时间:2014-09-16 10:03:15

标签: jquery ajax callback jquery-deferred

我有以下代码:

var arrOutfit = []; // will be filled
...
$.when(

  $.each(arrOutfit, function(key, sAdd) {

    $.post('/checkout/addArticle', 'sAdd=' + sAdd + '&sQuantity = 1');

  });

).then() {

  // something

}

但这不起作用。我认为数组循环无效。正如你所看到的,我有多个ajax调用,我想只有一个回调,所以我知道,当所有的请求都完成了。我怎样才能做到这一点?

任何想法都将受到赞赏。

祝你好运

1 个答案:

答案 0 :(得分:2)

您对$.when的使用并不完全正确。试试这个:

var arrOutfit = [], // will be filled
    promises = [];

// ...

$.each(arrOutfit, function(key, sAdd) {
    promises.push($.post('/checkout/addArticle', 'sAdd=' + sAdd + '&sQuantity = 1'));
});

$.when.apply($, promises).then(function(schemas) {
    // something...
});

请注意,each用于填充带有promise的数组,然后提供给when,这些将在完成后执行。