REST调用AngularJS中的for循环

时间:2018-01-22 22:16:25

标签: angularjs rest http

for (var i = 0; i < pricingPlans.length; i++) {
    productServices.retrivePricingPlan(pricingPlans[i].Id.Value).then(function (objPricingPlan) {
        productServices.createPricingPlan(objPricingPlan.data).then(function (objNewPricingPlan) {
            var newPlanID = objNewPricingPlan.data.PricingPlan.Id.Value;
            console.log("New ID");
            console.log(newPlanID);
            console.log("Old ID");
            console.log(product.PricingPlanAssociations[i].PricingPlanId.value);
            //  product.PricingPlanAssociations[i].PricingPlanId.value = newPlanID
        });
    });
}

我在for循环中进行REST调用,但我希望REST调用按以下顺序执行:

  1. 检索定价计划[i]
  2. 创建定价计划[i]
  3. 创建产品[i]
  4. 但是当我查看控制台选项卡时,它们以不同的顺序执行

    如何确保定价计划在for循环内以特定顺序执行?

    注意:retrivePricingPlancreatePricingPlan会回复$http.post()

    Network Tab

1 个答案:

答案 0 :(得分:1)

因为AJAX调用都是异步的,并且for循环是同步的,所以实际调用可以是任何顺序。 但是,“依赖”调用的顺序是正确的。 (也就是说,promise链在调用Create之前总是会调用Retrieve)

如果您确实需要按顺序工作,可以创建一个队列来管理异步调用顺序。