我有这个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循环完成执行时调用回调。
答案 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;
}
});
}