承诺不更新我的变量

时间:2016-08-18 16:26:19

标签: javascript angularjs angularjs-scope

我在我的控制器中有一个执行某些任务的功能,其中一个就是检查使用我的服务,如果有些价格或有效,如果有任何错误停止执行其余的代码,问题是我的变量“错误”没有被更新,基本上在我的承诺当有错误时它会增加错误变量,然后在这种情况下有任何错误返回(停止)。但无法弄清楚为什么不更新变量错误。

我的代码:

function apply(){
 var error = 0;
           if(vm.costPrice){

               vm.name="";


               for (var i = 0; i < vm.costPrice.length; i++) {

                       (function (i) {

                           if (isChecked(vm.costPrice[i].id)) {

                           //create later a service that accepts array of data (less requests = better performance)
                           MyService.validateThings(vm.product.pvp, vm.costPrice[i].discount_price)
                               .then(function (response) {

                                   },
                                   function (response) {

                                    error++;
                                       vm.isErrorCostPrice = true;
                                       if (i > 0) {
                                           vm.name += ' ';
                                       }
                                       vm.name += vm.costPrice[i].condition.name;

                                   });

                           }

                           }(i));

                }

                if(error > 0){
                return;
                }

// Other code above...

}

1 个答案:

答案 0 :(得分:0)

我猜你的意思是在这段代码:

if(error > 0){
    return;
}

错误始终为0.

由于你有一个带有在某些服务之后执行的promise的for循环,上面的代码会立即运行,并且你的promise会在以后运行。在检查是否有任何错误之前,您需要确保所有承诺都已完成。

您可以按照此问题的答案中所述执行某些操作:angular $q, How to chain multiple promises within and after a for-loop