JavaScript中的Ajax调用和回调

时间:2016-08-25 17:40:44

标签: jquery ajax callback settimeout

我有这个JavaScript功能。

function create_categories(callback) {
   cart_cats = [];
   E.Cart.calculateTotal(function(order) {
     cart_total = order.total;
     cart_items = order.cart.items;
     // loop through the items to get their categories.
     for(var i=0; i<cart_items.length; i++) {
        get_product_category(cart_items[i].product.id);
     }
   });

   setTimeout(callback, 3000);
}

get_product_category函数进行ajax调用,获取cart_item的类别,然后将其推送到cart_cats数组,这是一个全局声明的数组,我需要使用它在我的callback

现在我不想在这里使用setTimeout因为我永远无法确定create_categories函数在执行callback之后可以执行的最长时间,因为cart_items可以包含许多项目。

我想在for循环完成执行时调用回调。

1 个答案:

答案 0 :(得分:0)

function create_categories(callback) {
   cart_cats = [];
   E.Cart.calculateTotal(function(order) {
     cart_total = order.total;
     cart_items = order.cart.items;
     completed = 0;
     for(var i=0; i<cart_items.length; i++) {
        get_product_category(cart_items[i].product.id);
        completed++;
     }
     if(completed == cart_items.length){
        callback;
     }
   });
}
相关问题