【发布时间】:2016-11-08 20:40:53
【问题描述】:
我不熟悉在 angularjs 中使用 Promise,目前在生成某些输出时遇到困难。我正在尝试使用 for 循环来生成句子数组,每个句子都按“levelName:groupName - description”进行。
我有一个名为“prodFactory”的工厂,它使用 $http.get 通过 getLevelNames()、getGroupNames(levelName) 和 getGroupData(groupName) 方法获取 levelName、groupName 和描述。从我的源文件中,我有一个包含 3 个 levelNames 的数组,每个 levelNames 都与一个包含 2 个 groupNames 的数组相关联。运行下面的代码时,我尝试记录值并得到以下结果:
i = 229, j = 2, data1 = 我定义的级别名称,data2 = 我定义的组名。
虽然我能够获得我的关卡和组名,但由于 i 和 j 的值与 for 循环定义的值不同,我得到了“未定义:未定义 - 描述”的结果。
有没有办法得到正确的输出?谢谢!
代码 sn-p
prodFactory.getLevelNames().then(function(data1){
var suggestions = [];
$scope.data1 = data1;
for(i=0; i<data1.length; i++){
prodFactory.getGroupNames(data1[i]).then(function(data2){
$scope.data2 = data2;
for(j=0; j<data2.length; j++){
prodFactory.getGroupData(data2[j]).then(function(data3){
$scope.data3 = data3;
for(k=0; k<data3[0].length; k++){
console.log(i);
console.log(j);
console.log(data1);
console.log(data2);
suggestions.push($scope.data1[i]+": "
+$scope.data2[j]+" - "+$scope.data3[0][k]);
};
});
};
});
};
$scope.getSuggestions = suggestions;
console.log($scope.getSuggestions);
});
【问题讨论】:
标签: javascript angularjs closures