我在我的控制器中有一个执行某些任务的功能,其中一个就是检查使用我的服务,如果有些价格或有效,如果有任何错误停止执行其余的代码,问题是我的变量“错误”没有被更新,基本上在我的承诺当有错误时它会增加错误变量,然后在这种情况下有任何错误返回(停止)。但无法弄清楚为什么不更新变量错误。
我的代码:
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...
}
答案 0 :(得分:0)
我猜你的意思是在这段代码:
if(error > 0){
return;
}
错误始终为0.
由于你有一个带有在某些服务之后执行的promise的for循环,上面的代码会立即运行,并且你的promise会在以后运行。在检查是否有任何错误之前,您需要确保所有承诺都已完成。
您可以按照此问题的答案中所述执行某些操作:angular $q, How to chain multiple promises within and after a for-loop