【发布时间】:2016-12-25 16:19:54
【问题描述】:
我的控制器中有一个执行某些任务的功能,其中之一是检查使用我的服务是否某些价格或有效,如果存在任何错误停止执行其余代码,问题是我的变量“错误”没有被更新,基本上在我的承诺中,当出现错误时它会增加错误变量,然后在这种情况下返回任何错误(停止)。但无法弄清楚为什么不更新变量错误。
我的代码:
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...
}
【问题讨论】:
-
可以稍微格式化一下代码吗?
-
但是,这是因为
validateThings是异步运行的,所以你很可能会在错误更新之前命中你的 if 语句。 -
那么有什么建议可以解决吗?
-
你要等到所有的承诺都解决后再检查错误。
标签: javascript angularjs angularjs-scope