除此之外,为什么在$scope
之前设置的$q.all
值被完全忽略?
主控制器内的功能:
$scope.apply = function (security) {
var entity = shareDataService.getModalEntity();
var depot = shareDataService.getModalDepot();
$scope.loaded = false;
var myDataPromise;
if (entity == "NULL") {
myDataPromise = getDataService.getDataFromREST(security);
} else {
myDataPromise = $q.all(getDataService.keepICorrect(security));
};
myDataPromise.then(function () {
//DO STUFF
}, function errorCallback(response) {
//DO MORE STUFF
});
}
我服务中的keepICorrect()
函数(这是一个闭包):
keepICorrect: function (security) {
var promises = [];
for (var i = 0 ; i < entity.length; i++) {
promises.push(this.getDataFromREST(security, i));
}
return promises;
},
但是,执行$scope.apply()
函数时,没有任何反应。布尔$scope.loaded
没有在作用域上激活,也没有抛出异常(这正是我所期待的)。这是为什么?
我已经编辑了代码并使我的控制器功能Apply
检查entity = "NULL"
是否正确,这似乎解决了它是否是数组的问题。仍然没有回答我的问题,即如果q.all
没有返回一个promises数组,为什么在调用它的函数中没有任何事情发生,即使调用q.all
之前也是如此。
答案 0 :(得分:0)
请注意Promise库包装了所附的括号代码中抛出的所有错误,因此建议您在将函数包装到promise机制之前测试它们。
在你的情况下:
keepICorrect: function (security) {
var promises = [];
for (var i = 0 ; i < entity.length; i++) {
promises.push(this.getDataFromREST(security, i));
}
return promises;
},
你说它是一个闭包,所以我认为this.getDataFromREST
应该是undefined
。请尝试逐步添加正确的代码,以免隐藏错误并删除代码中的错误。